Pourquoi les programmeurs disent-ils que "Live" est inefficace? p>
3 Réponses :
Je suppose que c'est inefficace car le gestionnaire est placé sur le nœud racine et repose sur des bouillons pour attraper l'événement et exécuter le gestionnaire approprié.
Une alternative serait simplement Une autre alternative consiste à lier un seul gestionnaire à un conteneur et laissez vos événements à la bulle à ce sujet. Cela peut être agréable si vous avez beaucoup d'éléments identiques ajoutés à un conteneur. P> lier code> votre Hangler à vos éléments créés dynamiquement lorsqu'ils sont créés et ajoutés à la DOM. P>
$('#myContainer').delegate('.myElement', 'click' function() { alert($(this).text()); });
J'aurais mentionné .Delegate () code> ici, un moyen beaucoup plus propre de faire votre deuxième exemple :)
@Nick cravraver - ne pas .Delegate () code> lie un gestionnaire à chaque élément? Une bonne chose à propos de la méthode que j'ai mentionnée est que vous n'avez pas les frais généraux des gestionnaires sur plusieurs éléments.
+1 Si vous donnez un exemple :) Votre balisage actuel utiliserait ceci: $ ('# myContainer'). Délégué ('. Myelement', "Cliquez sur" Fonction () {Alerte ($ (This). );}); code>
@patrick - Il lie un gestionnaire juste comme .Live () code> à l'aide d'un contexte (
.Delegate () code> appels
.Live () code> interne) Au lieu d'écouter sur
document code> pour des bulles, il écoute sur l'élément que vous avez lié. C'est donc le même comportement, attrape la bulle beaucoup plus tôt.
@Nick Craver - Merci beaucoup. Je viens de jeter un coup d'œil aux docs aussi, et j'ai mal compris .Delegate () code>. Merci pour le conseil. J'ai inclus votre solution.
Si votre cas d'utilisation répond aux critères ci-dessus (notamment n ° 2), vous devez vous en tenir à la liaison directe sur les éléments et éviter Un exemple d'analyse comparative des performances de Je ne suis pas trop sûr du résultat final, mais je suis sûr que ce sera intéressant. P> live () code> pourrait seulement être considéré comme inefficace si: p>
live () p>. p>.
Live () code> Vous pouvez essayer consiste à profiler un fragment de code utilisant
live () code> pour lier un
cliquer sur < / Code> Handler à un élément et profilez également un autre fragment de code qui utilise
Cliquez sur () CODE> pour se lier à ce même élément. p>
Comme @Patrick le suggère peut être inefficace car elle nécessite un traitement pour tous les événements sur le document, que la bulle atteigne votre élément ou non.
C'est là que Délégué peut vous aider, car il fonctionne de la même manière que la vie, mais lui permet de ne faire qu'une plus petite proportion du document en la limitant à un parent commun p >
(en utilisant son exemple) p>
Quels programmeurs? À propos de ce que "vivre"? Quelles méthodes de reproduction?