J'ai un div
qui contient beaucoup spans
et chacun de ces span
s contient un seul href
.Attach cliquez sur l'événement pour couvrir balise HTML?
Comment puis-je joindre un événement click pour la balise a
?
J'ai un div
qui contient beaucoup spans
et chacun de ces span
s contient un seul href
.Attach cliquez sur l'événement pour couvrir balise HTML?
Comment puis-je joindre un événement click pour la balise a
?
Votre sélection live
serait div span a
(un a
quelque part à l'intérieur d'un span
qui est quelque part dans un div
). Par exemple:
$('div span a').live('click', function() {
// ...
});
Si vous voulez limiter à que un a
qui est un enfant direct d'un span
qui est un enfant direct d'un div
, qui serait div > span > a
(ou div span > a
pour a
s qui sont des enfants directs de partout de span
dans un div
, etc.).
Si vous voulez faire cela pour un div spécifique, remplacez div
ci-dessus par #the_id_of_the_div
(ou tout autre sélecteur qui identifiera ce div spécifique).
S'il y a un grand nombre d'ancres (a
, ou « HREF » comme l'OP les appelle), alors cela pourrait être préférable d'écrire en utilisant la délégation de l'événement: attacher un seul click
auditeur au parent div
et dans le rappel, découvrons qui a
initialement déclenché l'événement.
$('#yourDiv').click(function (event)
{
var $target = $(event.target);
if($target.is('div>span>a')
{
// your callback logic here, where you can consider
// $target to be analogous to $(this) in a non-delegated handler
}
});
++ wow, très belle façon de gérer ça! mais je pense que son problème est le preventDefault(), n'est-ce pas? – meo
C'est ce que les méthodes '.live' et' .delegate' font en interne, pas de raison de l'implémenter manuellement. – interjay
bon à savoir! mais il a utilisé le clic;) – meo