JQuery: Puis-je obtenir une référence aux événements liés sur un élément?

J'ai quelques éléments avec une fonction liée à l'événement de click . Je souhaite lier cette même fonction aux événements mouseout et mouseout . Est-il possible d'obtenir une référence à l'événement de clic afin que je puisse l'attribuer à ces autres événements? J'imagine quelque chose comme ça (à each() intérieur de each() ):

 $(this).bind('mouseover', $(this).click()); $(this).bind('mouseout', $(this).click()); $(this).unbind('click'); 

Questions que vous pourriez poser

Pourquoi ne modifiez-vous que le code qui l'associe à l'événement de clic?

Le JS qui l'installe fait partie d'un module Drupal ( Menu DHTML , si vous êtes curieux), donc je ne veux pas modifier le code du module car il sera effacé lorsque le module sera mis à jour inévitablement à l'avenir. J'utilise également le gestionnaire de click pour d'autres parties de la page. Je ne veux que le déplacer vers le mouseover et le click de mouseover pour un menu.

Dans jQuery, tous les événements liés par jQuery sont stockés dans les data sous les events clés. Ce qui suit consiste à faire ce que vous voulez:

 var $this = $(this), events = $this.data('events'); if( events && events['click'] ){ // Loop through each click event bound to this control $.each( events['click'], function(){ // this = the function $this.bind('mouseover mouseout', this); }); // Finally, remove all `click` handlers with one call $this.unbind('click'); } 

Essaye ça:

 jQuery('#element').data('events'); 

Vous pouvez également le faire:

 jQuery.each(jQuery('#element').data('events'), function(i, event){ jQuery.each(event, function(i, eventHandler){ console.log("The handler is " + eventHandler.toString() ); }); });