Mon html
1 895171
comment utiliser Jquery pour savoir si la case à cocher de cette ligne est cochée ou non. Supposons que je connaisse l’unique rowId.
Actuellement, je le fais
var checkbox = $('#' + rowId + " td input:checkbox"); if (checkbox.checked) { alert("checked"); } else { alert("unchecked"); }
Mais cela ne semble pas détecter le moment où la case à cocher est cochée.
Curieusement, les éléments suivants n’ont pas fonctionné non plus:
var curRow = $('#' + curRowId); var checkbox = $(curRow).find('input:checkbox').eq(0); if (checkbox.checked) { alert("checked"); } else { alert("unchecked"); }
Tu peux le faire:
var isChecked = $("#rowId input:checkbox")[0].checked;
Cela utilise un sélecteur de descendant pour la case à cocher, puis obtient l’élément DOM brut et examine sa propriété checked
.
Références pour les sélecteurs:
Mis à jour:
var rowId = ""; var checked = $("#" + rowId + " input:checkbox")[0].checked;
Votre code d’origine ne fonctionne pas car vous appelez checked
sur un jeu de résultats jQuery. Vous devez extraire l’élément DOM réel, ce que vous pouvez faire en appelant get()
(ou en indexant directement l’object comme dans la réponse de TJ). Comme il n’y a qu’un seul résultat, vous voulez que l’élément soit indexé à 0 dans le jeu de résultats.
Modifier après avoir vu le code mis à jour dans l’OP:
L’utilisation de eq()
réduit les éléments correspondants à celui de l’index spécifié . Effectivement, cela retournera un ensemble de résultats jQuery avec un object correspondant, celui que vous avez demandé à l’index spécifié. Il ne renvoie toujours pas d’élément DOM dont vous devez utiliser la propriété checked
.
Si vous n’avez qu’une case à cocher par ligne, c’est le moyen le plus rapide.
!!$('#rowId input:checked').length
Vous pouvez également omettre le !! et vérifier contre ‘> 0’ mais je pense que le !! est en fait plus rapide
Cela le ferait
var checked = $("#rowId" + rowId + " td.classID input:checkbox").is(":checked");