测试事件处理程序是否绑定到 jQuery 中的元素
2022-08-30 01:31:16
是否可以使用 jQuery 确定元素是否具有单击处理程序、更改处理程序或绑定到它的任何类型的事件处理程序?
此外,是否可以确定给定类型的事件有多少个单击处理程序(或任何类型的事件处理程序),以及事件处理程序中有哪些函数?
是否可以使用 jQuery 确定元素是否具有单击处理程序、更改处理程序或绑定到它的任何类型的事件处理程序?
此外,是否可以确定给定类型的事件有多少个单击处理程序(或任何类型的事件处理程序),以及事件处理程序中有哪些函数?
您可以从数据缓存中获取此信息。
例如,将它们记录到控制台(firebug,ie8):
console.dir( $('#someElementId').data('events') );
或迭代它们:
jQuery.each($('#someElementId').data('events'), function(i, event){
jQuery.each(event, function(i, handler){
console.log( handler.toString() );
});
});
另一种方法是您可以使用以下书签,但显然这在运行时没有帮助。
在绑定尚不存在时将其杀死不是最佳解决方案,但似乎足够有效!第二次“单击”时,您可以确定地知道它不会创建重复的绑定。
因此,我使用die()或unbind(),如下所示:
$("#someid").die("click").live("click",function(){...
或
$("#someid").unbind("click").bind("click",function(){...
或在最近的jQuery版本中:
$("#someid").off("click").on("click",function(){...