1

一个函数触发一个事件并传递一些数据,然后这些数据可能会被侦听器处理。如果不是,该函数想自己处理数据。好吧,因为我不知道包裹是否被处理,所以我的想法是找出是否有听众。有没有办法做到这一点,或者有人对我的问题有更好的想法吗?

提前致谢!

4

3 回答 3

2

您可以使用 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>
于 2013-05-12T09:15:34.113 回答
1

我创建了一个插件,主要用于您的测试。

// Example usage
$('.foo').hasEvent('click', someHandler) 
// returns true if someHandler is bound via jQuery on '.foo' 
// for the click event

该插件经过测试可与 jQuery 1.7 及更高版本一起使用

该插件托管在github上

于 2013-07-15T10:08:19.550 回答
1

我有一个非常相似的问题。它从来都不是在 jquery 中得到适当支持的东西,而是一种 hack。因此,您可以在 jquery 1.8 版之前使用

data('events')

1.8以后可以使用:

$._data( $('.element')[0], 'events' );

但是,如果您尝试做我正在做的事情...确保仅在控件上分配一次事件处理程序(即在某些表单验证后的保存按钮),那么您可以:

  1. 添加一个类并删除它以指示一个元素是否有事件(丑陋)。
  2. 在分配之前删除任何处理程序,即

$('element').unbind('event'); $('element').on('click', save);

于 2014-12-14T09:14:16.190 回答