2010-05-05 3 views

Répondre

5

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).

5

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 
    } 
}); 
+0

++ 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

+1

C'est ce que les méthodes '.live' et' .delegate' font en interne, pas de raison de l'implémenter manuellement. – interjay

+0

bon à savoir! mais il a utilisé le clic;) – meo

Questions connexes