2009-03-10 7 views
1

Je veux ajouter l'événement de clic à tous les éléments où le `id = « violacao »:Où est ce JQuery faux?

$(document).ready(function() { 
    jQuery('#violacao').click(function() { 
     alert('teste'); 
    }); 
}); 

Mais le premier lien répond au clic. Ceci est 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> 

Lorsque je tente de cette façon:

jQuery("a").click(function() { 
    alert('teste'); 
}); 

Il fonctionne très bien, sauf que tous les liens sont affectés. Qu'est-ce qui ne va pas?

Répondre

19

Les ID en HTML sont conçus pour être uniques (un par document). Changez l'ID en classe (et utilisez. Au lieu de #) et cela devrait fonctionner.

+0

et si vous avez des définitions CSS pour l'id de 'violacao', s'il vous plaît ajuster en conséquence –

+0

Merci! Maintenant ça marche. – Ricardo

+0

Bon point Dan! Heureux que ça marche Ricardo – spmason

1

Alors que Steve Mason dit que c'est vrai, le problème n'est pas cela.

Si vous modifiez l'ID d'une classe, un problème persiste: tous les liens seront affectés.

Au lieu de cela, si vous avez l'intention d'affecter un seul < A>, vous devez faire une des opérations suivantes:

a) attribuer des identifiants uniques à chaque < A>, faire quelque chose comme vous faisiez d'abord; ou

b) attribuer des classes et utiliser le: premier sélecteur:

jQuery("a.violacao:first").click(function(){ 
    alert('teste'); 
}); 

qui s'appliquera à la première ancre correspondant à la classe violacao. Alternativement, si vous voulez affecter une ancre spécifique, vous pouvez utiliser: eq (index). Pour une liste complète des sélecteurs, visitez le http://docs.jquery.com/Selectors.

+0

Merci pour l'information SebaGR! – Ricardo

+0

SebaGR mal lu la question, je pense. La sélection d'un lien n'est pas ce que l'affiche voulait, mais plutôt une partie du problème. La solution de classe est correcte dans ce cas, et ne sélectionne pas tous les liens. Je voulais juste éclaircir ça. – Wick

+0

Je ne pense pas ... il a dit "ça marche bien, sauf que tous les liens sont affectés.", Donc je crois que "sauf" mot nous dit que le comportement souhaité est de sélectionner une seule ancre. – Seb

Questions connexes