Où est ce JQuery faux?
-
08-07-2019 - |
Question
Je souhaite ajouter l'événement click à tous les éléments pour lesquels le `id = " violacao ":
$(document).ready(function () {
jQuery('#violacao').click(function() {
alert('teste');
});
});
Mais seul le premier lien répond au clic. Voici le code HTML généré:
<tr>
<td><a href="#" id="violacao">40954589</a></td>
<td>Perda de Comunicação</td>
</tr>
<tr>
<td><a href="#" id="violacao">88692020503</a></td>
<td>Perda de Comunicação</td>
</tr>
Quand j'essaie de cette façon:
jQuery("a").click(function() {
alert('teste');
});
Cela fonctionne bien, sauf que tous les liens sont affectés. Quel est le problème?
La solution
Les identifiants HTML sont censés être uniques (un par document). Modifiez l'ID en une classe (et utilisez. Au lieu de #) et cela devrait fonctionner.
Autres conseils
Bien que Steve Mason dise que c'est vrai, le problème n'est pas celui-là.
Si vous modifiez l'ID d'une classe, le problème persiste: tous les liens seront affectés.
Au lieu de cela, si vous souhaitez affecter un seul < A > ;, vous devez effectuer l'une des opérations suivantes:
a) Attribuez des identifiants uniques à chaque < A > ;, puis faites quelque chose comme vous le faisiez en premier; ou
b) Assignez des classes et utilisez le sélecteur: first:
jQuery("a.violacao:first").click( function (){
alert('teste');
} );
Cela s’appliquera à la première ancre correspondante avec la classe violacao. Si vous souhaitez affecter une ancre spécifique, vous pouvez également utiliser: eq (index).
Pour obtenir une liste complète des sélecteurs, visitez le site http://docs.jquery.com/Selectors . .