我想允許用戶點擊一個起點,然後點擊一個終點,並能夠在選定的兩點之間操作各種表單元素。如何使用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