询问事件是否在jQuery中有监听器

时间:2013-05-12 08:58:30

标签: javascript jquery events

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

提前致谢!

3 个答案:

答案 0 :(得分:2)

你可以使用jQuery之前的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>

答案 1 :(得分:1)

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

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

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

The plugin is hosted on github

答案 2 :(得分:1)

我有一个非常类似的问题。它从未在jquery中得到适当的支持,而是一种黑客攻击。因此,您可以使用

在jquery版本1.8之前执行此操作

data('events')

1.8之后,您可以使用:

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

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

  1. 添加一个类并将其删除以指示元素是否有事件(丑陋)。
  2. 在分配之前删除任何人,即
  3. $('element').unbind('event'); $('element').on('click', save);

相关问题