Javascript jQuery:我可以获得元素上绑定事件的引用吗?

Javascript jQuery:我可以获得元素上绑定事件的引用吗?,javascript,jquery,Javascript,Jquery,我有一些元素的函数绑定到click事件。我想将相同的函数绑定到mouseover和mouseout事件。是否可以获取对单击事件的引用,以便我可以将其分配给其他事件?我在想象这样的事情(在each())里面): 您可能会问的问题 为什么不更改将其绑定到click事件的代码 设置此功能的JS是Drupal模块的一部分(如果您好奇的话),因此我不想更改模块代码,因为在将来不可避免地更新模块时,它将被删除。我还在页面的其他部分使用单击处理程序-我只想将其移动到鼠标上方和鼠标出,用于一个菜单。尝试以下操作

我有一些元素的函数绑定到
click
事件。我想将相同的函数绑定到
mouseover
mouseout
事件。是否可以获取对单击事件的引用,以便我可以将其分配给其他事件?我在想象这样的事情(在
each()
)里面):

您可能会问的问题

为什么不更改将其绑定到click事件的代码

设置此功能的JS是Drupal模块的一部分(如果您好奇的话),因此我不想更改模块代码,因为在将来不可避免地更新模块时,它将被删除。我还在页面的其他部分使用
单击
处理程序-我只想将其移动到
鼠标上方
鼠标出
,用于一个菜单。

尝试以下操作:

jQuery('#element').data('events');
您也可以这样做:

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

在jQuery中,jQuery绑定的所有事件都存储在键
events
下的
data
中。以下内容将满足您的要求:

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');
}

类似于。只是为了其他人将来的参考,jQuery1.8中删除了这一点。数据(“事件”)不可用。在jquery 1.8中,您仍然可以使用
$访问事件字典。\u data(element,“events”)
,但这可能会随时更改。如果我想查找不仅由jquery绑定而且由其他方法/流程绑定的所有事件,该怎么办。
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');
}