一个函数触发一个事件并传递一些数据,然后这些数据可能会被侦听器处理。如果不是,该函数想自己处理数据。好吧,因为我不知道包裹是否被处理,所以我的想法是找出是否有听众。有没有办法做到这一点,或者有人对我的问题有更好的想法吗?
提前致谢!
一个函数触发一个事件并传递一些数据,然后这些数据可能会被侦听器处理。如果不是,该函数想自己处理数据。好吧,因为我不知道包裹是否被处理,所以我的想法是找出是否有听众。有没有办法做到这一点,或者有人对我的问题有更好的想法吗?
提前致谢!
您可以使用 1.8 之前的 jQuery 来做到这一点,如下所示:
<script src="http://code.jquery.com/jquery-1.6.min.js"></script>
<script>
$(document).ready(function() {
$("#click_here").click(function() {
alert("Handler for .click() called.");
});
console.log( $('#click_here').data('events') );
});
</script>
<div id="click_here">Click here</div>
我创建了一个插件,主要用于您的测试。
// Example usage
$('.foo').hasEvent('click', someHandler)
// returns true if someHandler is bound via jQuery on '.foo'
// for the click event
该插件经过测试可与 jQuery 1.7 及更高版本一起使用
我有一个非常相似的问题。它从来都不是在 jquery 中得到适当支持的东西,而是一种 hack。因此,您可以在 jquery 1.8 版之前使用
data('events')
1.8以后可以使用:
$._data( $('.element')[0], 'events' );
但是,如果您尝试做我正在做的事情...确保仅在控件上分配一次事件处理程序(即在某些表单验证后的保存按钮),那么您可以:
$('element').unbind('event');
$('element').on('click', save);