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

StackOverflow https://stackoverflow.com/questions/2229647

  •  19-09-2019
  •  | 
  •  

Question

Comment puis-je savoir dans mon code que le déclenchement preventDefault a été appelé?

$(document).trigger('customEvent', params);
if (/* ??? */)
    doDefaultActions();
Était-ce utile?

La solution

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

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

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

var prevented = event.isDefaultPrevented();

Autres conseils

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

event.isDefaultPrevented()

Ceci renvoie « vrai » ou « faux » basée sur si oui ou non preventDefault () a été appelé.

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

Les événements personnalisés ne sont pas des actions par défaut qui se passe .. (ils sont personnalisés).

Par contre, si vous voulez arrêter l'effet de bouillonnement de cet événement pour les autres alors jetez un oeil à triggerHandler qui ne bouillonne la hiérarchie ..

A ma connaissance le « preventDefault () » appel vise à prévenir les réponses du navigateur d'origine à des choses comme les clics sur les balises d'ancrage ou dans les champs de pressions sur les touches texte. Une fois que le cycle de gestion des événements est terminée, il est fini. Pour les événements confectionnés, je ne pense pas qu'elle ait un effet du tout, car il est tout au sujet du système de traitement des événements jQuery et non sur les fonctionnalités du navigateur natif.

Votre code pourrait créer une sorte de drapeau quelque part afin de communiquer avec le « monde extérieur ».

[modifier] ooh, vous pouvez essayer d'avoir le gestionnaire stash une référence à l'objet événement quelque part que le code exteral peut le trouver, puis vérifiez avec l'extérieur « isDefaultPrevented () ». Je ne sais pas si cela travaillerait cependant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top