597 votes

les gestionnaires d’événements jQuery trouver inscrite avec un objet

J’ai besoin de trouver les gestionnaires d’événements sont inscrits au-dessus d’un objet.

Par exemple :

``cliquez et mouseover sont enregistré.

Y a-t-il une fonction pour savoir qui et éventuellement itérer sur les gestionnaires d’événements ?

S’il n’est pas possible sur un objet jQuery, par le biais de méthodes appropriées, il est possible sur un objet DOM plain ?

732voto

jps Points 4120

Comme de jQuery 1.8, les données d'événement n'est plus disponible sur le public "API" pour les données. Lire ce jQuery blog. Vous devez maintenant utiliser ceci à la place:

jQuery._data( elem, "events" );

elem devrait être un Élément HTML, pas un objet jQuery, ou le sélecteur.

Veuillez prendre note, que ce soit à l'intérieur, "privé" de la structure, et ne devrait pas être modifié. L'utiliser pour des fins de débogage.

Dans les anciennes versions de jQuery, vous pourriez avoir à utiliser l'ancienne méthode, qui est:

jQuery( elem ).data( "events" );

94voto

Nick Craver Points 313913

Vous pouvez le faire comme ceci :

Si vous êtes sur jQuery 1.4 +, cela préviendra l’événement et les fonctions liées à elle :

Vous pouvez jouer avec elle sur jsFiddle ici

36voto

PhistucK Points 1010

Pour jQuery 1.8 +, cela ne fonctionnera plus car les données internes sont placées dans un objet différent.

Le dernier titre officieux (mais fonctionne dans les versions précédentes, au moins en 1.7.2) façon de le faire maintenant est -``

Le trait de soulignement (« _ ») est ce qui fait la différence ici. En interne, il appelle `` , le dernier paramètre (quatrième) est un interne un (« pvt »).

35voto

Rui Points 2159

Shameless plug, mais vous pouvez utiliser findHandlerJS

Pour l'utiliser, il suffit d'inclure findHandlersJS (ou juste un copier-coller du raw du code javascript de chrome de la fenêtre de la console) et de spécifier le type d'événement et un sélecteur jquery pour les éléments qui vous intéressent.

Pour votre exemple, vous pouvez trouver rapidement les gestionnaires d'événements que vous avez mentionné en faisant

findEventHandlers("click", "#el")
findEventHandlers("mouseover", "#el")

C'est ce qui est renvoyé:

  • élément
    La réelle de l'élément sur lequel le gestionnaire d'événement a été enregistré dans
  • les événements
    Un tableau avec les informations sur le jquery, des gestionnaires d'événement pour le type d'événement qui nous intéresse (par exemple, cliquez sur, changement, etc)
    • gestionnaire
      Réelle méthode de gestionnaire d'événement que vous pouvez voir en cliquant droit et en sélectionnant " Afficher la définition de fonction
    • sélecteur
      Le sélecteur prévu pour les délégués des événements. Elle sera vide pour direct les événements.
    • objectifs
      Liste avec les éléments que ce gestionnaire d'événements cibles. Par exemple, pour un délégué du gestionnaire d'événement est enregistré dans le document de l'objet et des objectifs de tous les boutons sur une page, cette propriété aura la liste de tous les boutons de la page. Vous pouvez passer d'eux et de les voir mis en évidence dans google chrome.

Vous pouvez l'essayer ici

13voto

Anton Points 1645

J’utilise le plugin eventbug à firebug à cet effet.

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