465 votes

jQuery : stopPropagation vs stopImmediatePropagation

Quelqu'un peut-il m’indiquer le différences b/w jquery et méthodes (éventuellement avec un exemple) ?

410voto

Dave Points 1743

empêchera tout gestionnaire **parent** en cours d’exécution alors que fera la même chose mais aussi empêcher les autres gestionnaires de s’exécuter.

Petit exemple de la documentation de jquery :

64voto

Anurag Points 66470

Ajouté un petit exemple sur jsfiddle pour montrer comment ces deux multiplication des arrêts de travail.

Il y a trois gestionnaires d'événements liés. Si on n'arrête pas tout de propagation, puis il devrait y avoir quatre alertes - trois sur l'enfant div, et un sur le div parent.

Si nous nous arrêtons le cas de la multiplication, puis il y aura 3 alertes (tout sur l'enfant intérieur de la div). Depuis l'événement ne sera pas propagée vers le haut de la hiérarchie DOM, le div parent de ne pas le voir, et son maître ne se déclenche pas.

Si nous nous arrêtons de propagation immédiatement, puis il y aura seulement 1 alerte. Même s'il y a trois gestionnaires d'événement attaché à l'intérieur de l'enfant div, seulement 1 est exécutée et la toute nouvelle propagation est tué immédiatement, même au sein du même élément.

34voto

SLaks Points 391154

empêchera les gestionnaires sur les éléments parents de s’exécuter. Appel empêchera également les autres gestionnaires sur l’élément même de la course.

30voto

Aron Rotteveel Points 27894

À partir de l' API jQuery:

En plus de garder supplémentaires les gestionnaires sur un élément de exécutée, cette méthode s'arrête la bouillonnant par implicitement appel de l'événement.stopPropagation(). Tout simplement prévenir les cas de propagation de ancêtre des éléments, mais de permettre à d'autres les gestionnaires d'événements à exécuter sur le même élément, nous pouvons utiliser de l'événement.stopPropagation() à la place.

Utilisation de l'événement.isImmediatePropagationStopped() pour savoir si cette méthode n'a jamais été appelé (sur cet événement de l'objet).

En bref: event.stopPropagation() permet à d'autres gestionnaires sur le même élément à être exécuté, alors qu' event.stopImmediatePropagation() empêche de chaque événement en cours d'exécution.

2voto

Rahul Kumar Points 394

de l'événement.stopPropagation() permet à d'autres gestionnaires sur le même élément à exécuter, en tout cas.stopImmediatePropagation() empêche de faire de chaque événement en cours d'exécution. Par exemple, voir ci-dessous jQuery bloc de code.

$("p").click(function(event)
{ event.stopImmediatePropagation();
});
$("p").click(function(event)
{ // This function won't be executed 
$(this).css("color", "#fff7e3");
});

Si l'événement.stopPropagation a été utilisé dans l'exemple précédent, alors le prochain événement de clic sur l'élément p qui modifie le css feu, mais dans le cas de l'événement.stopImmediatePropagation(), la prochaine p cliquez sur l'événement ne se déclenche pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X