Desidero consentire all'utente di fare clic su un punto iniziale, quindi fare clic su un punto finale e essere in grado di manipolare vari elementi del modulo tra i due punti selezionati.Come dovrei attraversare elementi tra due elementi noti nella dom usando jquery?
La pagina è una tabella con numerose righe e ogni riga contiene le informazioni pertinenti per manipolare/salvare una risposta alla domanda in quella riga. Ogni riga ha un input nascosto per il valore, nonché i pulsanti di opzione Sì/No, principalmente per utenti non esperti. La cella TD con la domanda consente all'utente di fare clic o di alternare tra Sì, No, Vuoto. Quindi in pratica ho lasciato i pulsanti di opzione sulla pagina per mostrare Sì/No e utilizzare un campo nascosto per memorizzare un valore di (1,0, -1)
Questo è quello che uso per impostare la risposta quando la cella della domanda è cliccato.
$(".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);
});
Ora voglio permettere all'utente di fare clic su un punto di partenza e che hanno risposta popolare tutti alla seguente domanda giù ovunque hanno cliccato sul secondo punto. Potrebbe essere 10 domande di distanza, o 20 domande, è una variabile sconosciuta. Potrebbe esserci una pagina con 130 domande e 20 domande di seguito potrebbero essere "Sì". Come indicato sopra ogni riga ha una cella "Domanda" e la cella prima è la cella dell'oggetto.
So come impostare l'elemento iniziale e l'elemento finale in base a un selettore/funzione jQuery associato a un evento click/dblclick elencato di seguito.
Quello di cui non sono sicuro è come attraversare la dom o selezionare tutti gli elementi che devo manipolare tra i due punti selezionati nella pagina.
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);
}
});
Sono stato in grado di utilizzarlo per fare ciò di cui avevo bisogno. – Breadtruck