Je souhaite autoriser l'utilisateur à cliquer sur un point de départ, puis à cliquer sur un point de fin et à pouvoir manipuler divers éléments de formulaire entre les deux points sélectionnés.Comment je traverserais des éléments entre deux éléments connus dans le dom en utilisant jquery?
La page est un tableau avec de nombreuses lignes et chaque ligne contient les informations pertinentes pour manipuler/enregistrer une réponse à la question dans cette ligne. Chaque ligne a une entrée cachée pour la valeur, ainsi que des boutons radio Oui/Non, principalement pour les utilisateurs non qualifiés. La cellule TD avec la question permet à l'utilisateur de cliquer ou de basculer entre Oui, Non, Vide. Donc, fondamentalement, j'ai laissé les boutons radio sur la page pour afficher Oui/Non et utiliser un champ caché pour stocker une valeur de (1,0, -1)
Ceci est ce que j'utilise pour définir la réponse lorsque la cellule de question est cliqué.
$(".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);
});
Maintenant, je veux permettre à l'utilisateur de cliquer sur un point de départ et ont cette réponse remplir toute la question suivante vers le bas à l'endroit où ils ont cliqué sur le deuxième point. Pourrait être 10 questions de suite, ou 20 questions, c'est une variable inconnue. Il peut y avoir une page avec 130 questions, et 20 questions d'affilée peuvent être "Oui". Comme indiqué ci-dessus chaque ligne a une cellule "Question" et la cellule avant que ce soit la cellule de l'élément.
Je sais comment définir l'élément de départ et l'élément final en fonction d'un sélecteur/fonction jquery lié à un événement click/dblclick répertorié ci-dessous. Ce dont je ne suis pas sûr, c'est comment traverser dom ou sélectionner tous les éléments dont j'ai besoin pour manipuler entre les deux points sélectionnés sur la page.
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);
}
});
J'ai été capable d'utiliser ceci pour faire ce dont j'avais besoin. – Breadtruck