我想允许用户点击一个起点,然后点击一个终点,并能够在选定的两点之间操作各种表单元素。如何使用jquery遍历dom中两个已知元素之间的元素?
该页面是一个有许多行的表格,每行包含相关信息来操纵/保存该行中问题的答案。每行都有一个隐藏的输入值,以及Yes/No单选按钮,主要用于不熟练的用户。具有该问题的TD小区允许用户点击或切换是,否,空。所以基本上我留下页面上的单选按钮来显示是/否,并使用隐藏字段来存储值(1,0,-1)
这是我用来设置问题单元格时的答案被点击。
$(".question").bind("click dblclick", function(e) {
var newClassName = "AnswerUnknown";
var hiddenAnswerId = $(this).attr('id').replace("question", "answer");
var answer = parseInt($("#" + hiddenAnswerId).val());
var newValue;
switch (answer) {
case -1:
newClassName = "AnswerCorrect";
newValue = 1;
$("#" + $(this).attr('id').replace("answer", "radioYes")).attr('checked', 'checked');
$("#" + $(this).attr('id').replace("answer", "radioNo")).attr('checked', '');
break;
case 1:
newClassName = "AnswerWrong";
newValue = 0;
$("#" + $(this).attr('id').replace("answer", "radioYes")).attr('checked', '');
$("#" + $(this).attr('id').replace("answer", "radioNo")).attr('checked', 'checked');
break;
default:
newClassName = "AnswerEmpty";
newValue = -1;
$("#" + $(this).attr('id').replace("answer", "radioYes")).attr('checked', '');
$("#" + $(this).attr('id').replace("answer", "radioNo")).attr('checked', '');
}
$("#" + hiddenAnswerId).val(newValue);
$(this).removeClass().addClass(newClassName);
});
现在我想允许用户点击一个起点,有一个答案填入下面所有的问题到任何地方点击第二项。可能是10个问题,或20个问题,这是一个未知的变量。可能有一个页面上有130个问题,连续20个问题可能是“是”。如上所述,每一行都有一个“问题”单元,并且之前的单元是单元单元。
我知道如何根据绑定到下面列出的click/dblclick事件的jquery选择器/函数来设置起始元素和结束元素。
我不确定的是如何遍历dom或选择我需要在页面上的两个选定点之间操作的所有元素。
var StartItem;
var EndItem;
$(".item").bind("click dblclick", function(e) {
var StartClassName = "AnswerUnknown";
var EndClassName = "AnswerUnknown";
var StartAnswerId;
var EndAnswerId;
var StartAnswer;
if (StartItem === undefined) {
StartItem = this;
StartAnswerId = $(this).attr('id').replace("item", "rs");
StartAnswer = parseInt($("#" + StartAnswerId).val());
}
else {
if (EndItem === undefined) {
EndItem = this;
EndAnswerId = $(this).attr('id').replace("item", "rs");
EndAnswer = parseInt($("#" + EndAnswerId).val());
}
}
if (StartItem == this) {
$(this).removeClass().addClass(StartClassName);
}
if (EndItem == this) {
$(this).removeClass().addClass(EndClassName);
}
});
我能够利用它来做我所需要的。 – Breadtruck 2009-09-06 21:14:50