Cliquez sur les lignes de la table pour sélectionner la case à cocher à l'aide de jQuery
Que je n'ai pas trouvé question posée avant, sur la façon de bascule case cliquez sur une ligne du tableau, donc je voudrais partager mon approche de cette...
Vous devez vous connecter pour publier un commentaire.
Pour sélectionner la case à cocher d'une ligne à l'intérieur de la table, nous allons d'abord vérifier si l'
type
attribute
de l'élément que nous ciblent n'est pas une case à cocher si ce n'est pas une case à cocher que nous vous cochez toutes les cases imbriquée à l'intérieur de cette ligne de la table.Démo
Si vous souhaitez mettre en surbrillance la ligne de la table sur
checkbox
checked
que nous pouvons utiliser unif
condition avecis(":checked")
, si oui que nous trouvons le plus prochetr
élément à l'aide de.closest()
et que nous avons ajouter une classe à l'aide deaddClass()
Démo
Cette question a été utile pour moi, mais j'ai eu un problème avec la solution précédente. Si vous cliquez sur un lien dans une cellule de tableau, il va déclencher la case à cocher inverser.
J'ai googlé ce et j'ai vu une proposition visant à ajouter un
event.stopPropagation()
sur les liens du tableau, comme ceci:Cette solution était une mauvaise idée parce que j'avais un peu de jquery bootstrap liste sur un lien de la table...
Voici donc une des solutions qui me correspond mieux. Par le chemin que je suis en utilisant bootstrap 2.3, le point culminant de la ligne est faite par l'ajout de la "info" de la classe à la tr.
Pour utiliser ce code, vous avez juste besoin d'ajouter
class="selectable"
de la balise table.Vous aurez probablement envie d'être plus précis avec le test de la condition, par exemple si vous avez d'autres entrées dans la ligne.
Déclencher un clic comme la plupart des solutions proposées ci-dessus entraînera la fonction à exécuter deux fois. Mise à jour de l'hélice de la valeur plutôt:
Lien vers jsfiddle exemple ici
Vous pouvez simplement déclencher cet événement click...:)
OU
Même si l'on a accepté @M. Alien réponse fonctionne très bien, il ne fonctionne pas dans le cas où vous décidez d'ajouter une nouvelle
<tr>
ligne de façon dynamique avec jQuery à un certain point.Je recommande d'utiliser un événement délégation approche, qui est juste une légère modification de la accepté de répondre.
Au lieu de:
...
$('.record_table tr').click(function(event) {
...
utilisation
...
$('.record_table').on('click', 'tr', function(event) {
...
Et de même pour la mise en évidence, utilisation:
...
$(".record_table").on('change', "input[type='checkbox']", function (e) {
...
Plus d'infos ici: Cliquez sur événement n'a pas de feu pour les lignes de la table ajoutés dynamiquement