2010-06-29 12 views
3

J'écris un plugin jQuery la première fois et je me demande s'il existe un moyen d'empêcher jQuery d'exécuter les prochains événements attachés.Arrêter jQuery d'appeler les prochains événements

Exemple:

$(this).submit(function(){ 
    return $(this).do_some_validation(); 
} 

Si la validation ne passe pas (la fonction retourne false), la forme ne doit pas être soumis, mais s'il y a d'autres gestionnaires d'événement qui, seule la dernière valeur de retour de gestionnaire peut empêcher le formulaire d'être soumis.

Répondre

6

Utilisez la méthode stopPropagation():

$(this).submit(function(e){ 
    e.stopPropagation(); 
    return $(this).do_some_validation(); 
} 
1

stopPropagation() fonctionne sur la plupart des événements mais ne fonctionne pas toujours sur les événements délégués, .live() et .delegate().

return false; est un moyen infaillible si stopPropogation ne fonctionne pas d'abord.

0

-je utiliser cette fonction avec .live() et ne jamais avoir des problèmes

jQuery("a.entryTable, a.entryDelete").live("click", function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 

    // code 

    return false; 
}); 
5

Vous pouvez également regarder event.stopImmediatePropagation, comme stopPropagation «n'empêchera pas d'autres gestionnaires sur le même élément de course » (par exemple, deux soumet les gestionnaires sur le même formulaire doit toujours être déclenché si vous utilisez stopPropagation).