web-dev-qa-db-fra.com

Comment arrêter les événements bouillonnants dans jQuery?

Comment arrêter la propagation d'événements personnalisés dans jQuery?

Par exemple, j'ai ce code:

$('.myclass').bind('amodaldestroy', function(){
    ....does something.....
})

Comment puis-je autoriser ce déclenchement uniquement une fois sur le premier élément qu'il trouve lors de la propagation? Puis-je simplement ajouter return false?

$('.myclass').bind('amodaldestroy', function(){
     ....does something.....
    return false;
})
30
Stann

Selon jQuery documentation :

$('myclass').bind('amodaldestroy'), function(event) {
    ....does something....
    event.stopPropagation();
});
43
Daniel T.

Utilisez event.stopPropagation();

$('.myclass').bind('amodaldestroy', function(e){
    e.stopPropagation();
});

Vous pouvez également utiliser return false Mais il existe une différence subtile entre les deux en ce sens que le retour de faux appelle également event.preventDefault();

13
Russ Cam

Pour le support dans IE <9:

$(".element").click(function(e)
{
    var event = e || window.event;
    event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true);
});
7
David Sherret

Ce n'est peut-être pas génial mais

return false;

return false fera à la fois stopPropagation et event.preventDefault...

si vous ne voulez qu'un seul, vous pouvez choisir en fonction de votre choix

veuillez lire ceci, cela vient de SO seulement

return false est à la fois preventDefault et stopPropogation.

preventDefault empêchera l'événement par défaut de se produire, stopPropogation empêchera l'événement de se propager et retourner false fera les deux.

3
kobe
2
Codler