2010-02-20 3 views
0

Je suis confronté à quelques problèmes, en particulier avec les bulles d'événements et la méthode "live".Pourquoi "Live" ne se lie pas à l'élément réel

J'ai une table avec quelques cellules et dans chaque cellule "td", il y a une liste et un lien "li a". Les liens ont un ".class" associé à eux.

Je veux juste faire les liens fonctionne, j'utilise la méthode en direct (car ils sont créés dynamiquement)

$('.aclass').live('click',function() { 
// Do something 
}); 

quand je regarde l'événement d'écoute à l'aide des outils de développement Google Chrome, je vois que pas le lien qui écoutent la fonction anonyme, mais toute la cellule "td".

Pourquoi? Comment puis-je faire en sorte que le lien écoute la fonction?

+0

Je ne pense pas que je comprends très bien la question. Donnez un exemple de votre HTML. – KyleFarris

Répondre

1

[mise à jour]

maintenant jQuery a la méthode .on, ce qui est beaucoup mieux, plus claire et je recommande d'utiliser seulement .on et .off pour tous les événements que vous faites.

[/ mise à jour]

Vous devez écrire plus clairement la prochaine fois;)

fonction en direct lie l'événement à l'élément parent de tous les éléments sélectionnés, donc dans votre cas au parent d'éléments avoir une classe 'aclass'. Et puis il écoute et appelle votre fonction d'événement lorsque le clic est fait sur une chose qui convient à un sélecteur. C'est pourquoi le comportement est différent.

Si vous voulez lier un clic directement à une liaison d'utilisation de l'élément au lieu de vivre et faire

$('.aclass').unbind('click').bind('click',function(){ something }); 

chaque fois après avoir créé quelques nouveaux éléments

0

La méthode live est en particulier utile pour les éléments créés dynamiquement. Dans votre cas, il semble, des liens ne sont pas créés à la volée, vous pouvez simplement utiliser ceci:

$('.aclass').click(function() { 
// Do something 
}); 
Questions connexes