Quiero permitir que el usuario haga clic en un punto de inicio y luego haga clic en un punto final y pueda manipular varios elementos de formulario entre los dos puntos que se seleccionaron.¿Cómo atravesaría elementos entre dos elementos conocidos en la dom usando jquery?
La página es una tabla con numerosas filas y cada fila contiene la información relevante para manipular/guardar una respuesta a la pregunta en esa fila. Cada fila tiene una entrada oculta para el valor, así como botones de opción Sí/No, principalmente para usuarios no capacitados. La celda TD con la pregunta permite al usuario hacer clic o alternar entre Sí, No, Vacío. Básicamente dejé los botones de opción en la página para mostrar Sí/No y uso un campo oculto para almacenar un valor de (1,0, -1)
Esto es lo que uso para establecer la respuesta cuando la celda de pregunta se hace clic.
$(".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);
});
Ahora quiero permitir que el usuario haga clic en un punto de partida y tienen que rellenar toda respuesta a la siguiente pregunta hasta donde se hace clic sobre el segundo punto. Podría estar a 10 preguntas de distancia, o 20 preguntas, es una variable desconocida. Puede haber una página con 130 preguntas y 20 preguntas seguidas pueden ser "Sí". Como se indicó anteriormente, cada fila tiene una celda de "Pregunta" y la celda anterior es la celda del elemento.
Sé cómo establecer el elemento de inicio y el elemento de finalización basado en un selector/función jquery vinculado a un evento click/dblclick enumerado a continuación.
Lo que no estoy seguro es cómo atravesar el dom o seleccionar todos los elementos que necesito manipular entre los dos puntos seleccionados en la página.
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);
}
});
Pude utilizar esto para hacer lo que necesitaba. – Breadtruck