7
votes

Arrêter l'événement Bubbling - Augmente les performances?

Si je ne retourne pas false code> à partir d'un rappel d'événement ou à l'aide de e.stoppropagation code> de jQuery, les bulles d'événement en haut de la DOM.

Dans la plupart des scénarios, je m'en fiche si les bulles d'événement ou non. Comme avec cet exemple de structure DOM: P>

$('#theDiv').submit(function() {
    alert('DIV!');
});
$('#theForm').submit(function(e) {
    alert('FORM!');
    e.preventDefault();
});​


3 commentaires

Il ne devrait pas avoir d'effet quoi que ce soit, peut-être même un coup depuis le navigateur des milliers d'événements tout le temps, il ne s'agit pas nécessairement de ne pas les buller uniquement s'il y a un auditeur.


@Robig. C'est pourquoi je veux l'annuler ...


Pourquoi ne-tu pas la benchmark? En théorie, arrêt de la propagation = moins à faire = plus rapide. En pratique, cela dépend des détails de la mise en œuvre du navigateur et sera probablement à peine perceptible de toute façon.


3 Réponses :


4
votes

Voici une comparaison entre sur ( ) et LIVE () Qui impliquent Boubellement et la raison JQUERY remplacée live () . Le problème avec live () était que ces événements étaient attachés au document, ce qui entraîne une longue parculion de l'arbre pour trouver le gestionnaire. Ce que vous pouvez faire avec on () est que vous pouvez attacher le gestionnaire au parent commun le plus proche, évitant ainsi la longue parculion de l'arbre à la recherche d'un gestionnaire - ce qui signifie des performances plus rapides.

Mais je suggère de faire vos propres repères pour vérifier.


0 commentaires

6
votes

Prestations de performance? Oui, il existe de légers avantages, comme indiqué dans ce test de performance entre jQuery live () et sur () . Comme @joseph a également noté, la différence entre les deux est que Live se propage de tout le chemin de l'arborescence, tandis que on () ne va que sur le parent commun le plus proche.

Dans ces tests, il est montré que on () peut surperformer live () jusqu'à 4 fois. En pratique, cela ne vaut probablement toujours pas la peine de diviser les poils, mais si vous avez des structures HTML très profondes et de nombreux déclencheurs d'événements, la différence de performance dans l'arrêt de la propagation peut être utile, je suppose.


1 commentaires

En effet, Live () est maintenant obsolète pour cela et d'autres raisons.



2
votes

Ce test montre qu'il existe un avantage de performance pour tuer l'événement tôt. (15% -30%) et il y aurait probablement une plus grande différence sur un DOM complexe. Il est également intéressant de noter que la capture des auditeurs d'événements semblent être légèrement plus rapides que les auditeurs d'événements de barbillage, peu importe ce que vous faites avec l'événement après la manipulation. Étrange mais intéressant; Je n'ai testé que dans un navigateur si


0 commentaires