私は、開始点をクリックして終了点をクリックし、選択された2点の間の様々なフォーム要素を操作できるようにします。jqueryを使用してdom内の2つの既知の要素の間で要素をトラバースする方法はありますか?
ページは多数の行を含むテーブルであり、各行にはその行の質問に対する回答を操作/保存するための関連情報が含まれています。各行には値の隠れた入力と、主に熟練していないユーザーのためのはい/いいえラジオボタンがあります。この質問の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);
});
は今、私は、彼らが2番目の項目をクリックしたどこまですべて、次の質問を移入開始点をクリックして、その答えを持っているユーザーをできるようにしたいです。離れて10の質問、または20の質問、それは未知の変数です。 130の質問があるページがあり、20の質問が「はい」の場合があります。上記のように、各行には「質問」セルがあり、その前のセルはアイテムセルです。
私は、以下にリストされているクリック/ dblclickイベントにバインドされたjqueryセレクタ/関数に基づいて、開始要素と終了要素を設定する方法を知っています。
私がよく分からないことは、DOMをトラバースする方法、またはページ上の2つの選択されたポイントの間で操作する必要があるすべての要素を選択することです。
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