Dove è sbagliato questo JQuery?
-
08-07-2019 - |
Domanda
Voglio aggiungere l'evento click a tutti gli elementi in cui `id = " violacao " ;:
$(document).ready(function () {
jQuery('#violacao').click(function() {
alert('teste');
});
});
Ma solo il primo link risponde al clic. Questo è il codice HTML generato:
<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>
Quando provo in questo modo:
jQuery("a").click(function() {
alert('teste');
});
Funziona bene, tranne per il fatto che tutti i collegamenti sono interessati. Cosa c'è che non va?
Soluzione
Gli ID in HTML devono essere univoci (uno per documento). Cambia l'ID in una classe (e usa. Invece di #) e dovrebbe funzionare.
Altri suggerimenti
Mentre ciò che Steve Mason dice è vero, il vero problema non è quello.
Se cambi ID in una classe, il problema persiste: tutti i collegamenti saranno interessati.
Invece, se miri a influenzare un singolo < A > ;, dovresti effettuare una delle seguenti operazioni:
a) Assegna ID univoci a ciascun < A > ;, quindi fai qualcosa come quello che stavi facendo per primo; o
b) Assegna le classi e usa il: primo selettore:
jQuery("a.violacao:first").click( function (){
alert('teste');
} );
Ciò si applicherà alla prima ancora di corrispondenza con il violacao di classe. In alternativa, se si desidera influire su un ancoraggio specifico, è possibile utilizzare: eq (indice).
Per un elenco completo dei selettori, visitare http://docs.jquery.com/Selectors .