我在此连接上绑定了两个事件处理程序: 浏览器
<a href='#' id='elm'>Show Alert</a>
JavaScript: 框架
$(function() { $('#elm').click(_f); $('#elm').mouseover(_m); }); function _f(){alert('clicked');} function _m(){alert('mouse over');}
有什么方法能够获取绑定在元素上的全部事件的列表,在本例中是id="elm"
元素? 函数
在现代版本的jQuery中,您将使用$._data
方法查找jQuery附加到相关元素的任何事件。 注意 ,这是仅供内部使用的方法: 工具
// Bind up a couple of event handlers $("#foo").on({ click: function(){ alert("Hello") }, mouseout: function(){ alert("World") } }); // Lookup events for this particular Element $._data( $("#foo")[0], "events" );
$._data
的结果将是一个包含咱们设置的两个事件的对象(以下图所示,其中的mouseout
属性已展开): 开发工具
而后,在Chrome中,您能够右键单击处理函数,而后单击“查看函数定义”,以向您显示在代码中定义的确切位置。 this
当我像这样向$ ._ data传递一个稍微复杂的DOM查询: $._data($('#outerWrap .innerWrap ul li:last a'), 'events')
它将在浏览器控制台中引起未定义。 spa
所以,我必须在父div上使用$ ._ data: $._data($('#outerWrap')[0], 'events')
来查看a标签的事件。 这是相同的JSFiddle: http : //jsfiddle.net/giri_jeedigunta/MLcpT/4/ .net
jQuery Audit插件插件应可以让您经过常规的Chrome开发工具进行此操做。 它不是完美的,可是它应该让您看到绑定到元素/事件的实际处理程序,而不单单是通用jQuery处理程序。 插件
我用过相似的东西if($ ._ data($(“” a.wine-item-link“)[0])。events == null){...作一些事情,再次将它们的事件处理程序再次绑定}检查若是个人元素绑定到任何事件。 若是您已从该元素取消附加全部事件处理程序,它将仍然显示未定义(空)。 这就是为何我在if表达式中对此进行评估的缘由。 调试
通常状况:
Sources
标签 Event Listener Breakpoints
,而后展开树 一样,您能够:
Inspect element
” event listeners
”。