34 votes

jQuery: Comment utiliser event.preventDefault () avec des événements personnalisés?

Comment savoir dans mon code de déclenchement que preventDefault a été appelé?

 $(document).trigger('customEvent', params);
if (/* ??? */)
    doDefaultActions();
 

48voto

Dave Van den Eynde Points 8199

trigger () peut également prendre un objet événement, donc si vous pouvez créer un objet événement, comme ceci:

 var event = jQuery.Event("customEvent");
$(document).trigger(event);
 

alors vous pouvez vérifier après le déclencheur pour voir si preventDefault () a été appelé comme ceci:

 var prevented = event.isDefaultPrevented();
 

1voto

user113716 Points 143363

Si vous demandez comment savoir si la valeur par défaut a été empêchée ou non, utilisez:

event.isDefaultPrevented()

Cela retournera «vrai» ou «faux» selon que preventDefault () a été appelé ou non.

EDIT: http://api.jquery.com/event.isDefaultPrevented/

1voto

Gaby aka G. Petrioli Points 85891

Les événements personnalisés n'ont pas d'actions par défaut qui se produisent .. (ils sont personnalisés).

D'un autre côté, si vous voulez arrêter l'effet de propagation de cet événement à d'autres, jetez un œil à triggerHandler qui ne remonte pas à la hiérarchie.

0voto

Pointy Points 172438

À ma connaissance, la "preventDefault()" appel est de prévenir le navigateur natif des réponses à des choses comme les clics sur les balises d'ancrage ou des combinaisons de touches dans les champs de texte. Une fois la gestion des événements de cycle est terminé, c'est fini. Pour des événements, je ne pense pas que cela ait un quelconque effet depuis qu'il est tout au sujet de l'jQuery de traitement des événements système et pas sur les indiens de la fonctionnalité de navigateur.

Votre code pourrait définir une sorte de drapeau quelque part afin de communiquer avec le "monde extérieur."

[edit] oh! vous pourriez essayer d'avoir le gestionnaire de ranger une référence à l'objet de l'événement quelque part que la exteral code peut le trouver, puis à l'externe, vérifiez avec "isDefaultPrevented()". Je ne sais pas si c'fallait cependant.

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