2011-05-20 4 views
4
$('body').delegate(".foo", 'click', function(){}); 

ouQuelle est la meilleure approche pour lier une action?

$(".foo").live('click', function(){}); 

Je préfère la deuxième, mais est peut-être at-il des avantages à utiliser d'abord?

+3

Une autre question, avez-vous besoin de la fonctionnalité 'live'? Sinon vous pouvez utiliser le $ (". Foo"). Click (function() {}); syntaxe. – RvdK

+0

Oui, j'ai besoin de la fonctionnalité 'live'. Et j'en ai besoin pour tout le document. – McKey

+1

Dans les réponses ci-dessous, en bref, utilisez 'delegate()'. Je regardais ça juste ce matin. – Bojangles

Répondre

3

délégué est comme un live remanié en ce sens qu'elle accomplit la même tâche que live mais sans les inconvénients associés. Notamment live attache au document et a des problèmes avec le chaînage. Delegate a également des avantages en termes de performances par rapport au live, ce qui est un plus.

+0

C'est ce que je demande. Je vous remercie. – McKey

1

Cela dépend de ce que vous allez faire. Il existe différentes méthodes pour différents objectifs.

  • delegate()
    Joindre un gestionnaire à un ou plusieurs événements pour tous les éléments qui correspondent au sélecteur, maintenant ou dans l'avenir, sur la base d'un ensemble spécifique d'éléments racine. Delegate est une alternative à l'utilisation de la méthode .live(), autorisant chaque liaison de délégation d'événement à des éléments DOM spécifiques.
  • live()
    Attachez un gestionnaire à l'événement pour tous les éléments qui correspondent au sélecteur actuel, maintenant et dans le futur.
  • bind()
    Reliez un gestionnaire à un événement pour les éléments.
0

Eh bien, la différence entre en direct et délégué est:

  • fonction en direct ne peut pas être utilisé dans Enchaînement. la fonction en direct doit être utilisée directement sur un sélecteur/élément.

  • Il y a une différence de plus en termes de performance, si le contexte n'est pas spécifié avec la fonction en direct. Contexte signifie que vous êtes définissant la limite de recherche dans un nœud spécifique . Si vous ne spécifiez pas le contexte avec la fonction en direct, alors il attache le gestionnaire au document par défaut et, lorsqu'il est exécuté, traverse le DOM, ce qui cause un problème de performance.

Questions connexes