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