2010-04-01 3 views
2

Donc, je comprends le sens de $ .delegate et je sais pourquoi il fait ce qu'il fait, mais je me demande s'il y a un problème.jQuery: déléguer des clics à des éléments qui contiennent d'autres éléments

J'ai des éléments de liaison qui contiennent des portées comme ceci:

<a href='#'> 
    <span>Person Name</span> 
    <span>Person Info</span> 
</a> 

J'utilise le code suivant dans jQuery pour la délégation de l'événement:

containerElement.delegate('click','a',function(){...}); 

Le problème est que ce ne se déclenche que lorsque je clique sur espace blanc non occupé par une travée. Je sais qu'il le fait parce que délégué compare simplement la cible d'événement à «un» pour vérifier si elle doit déclencher le délégué, mais je veux inclure les travées, à peu près tout ce qui <a>...</a>

Répondre

2

Sur la base de votre commentaire Je pense que vous cherchez ce qui suit:

target.is('a, a > *'); 

.. ou quelque chose de similaire.

2

vous l'avez écrit dans l'autre sens. le premier argument est le sélecteur et le second est le nom de l'événement

$ ('corps') délégué ('a', 'click', function() { alert ('salut'); }). ;

+0

Votre inexactitude nonobstant, cela ne commence même pas à répondre à ma question. –

+0

@Master ça l'a fait, l'avez-vous testé? Je viens juste de le faire et ça me déclenche très bien même si je clique sur une durée. Peut-être que vous avez besoin de formuler votre question mieux si ce n'est pas ce que vous cherchez? – anomareh

+0

@Master, je l'ai testé aussi bien et quand vous mettez les arguments dans le bon ordre cela fonctionne très bien. En cliquant sur le texte dans les balises d'envergure déclenche l'événement. –

0

Comme, vinhboy suggère, j'utiliser

$("a").live("click", myFunction); 

function myFunction() 
{ 
    alert("Hello"); 
} 

En fait, donner vos balises a une classe comme "myLink", puis effectuer sur ce

$("a.myLink").live("click", myFunction); 

function myFunction() 
{ 
    alert("Hello"); 
} 
+0

Lire: http://api.jquery.com/delegate/ - Delegate est un raccourci vers 'each'>' live'. Pas l'inverse. – anomareh

Questions connexes