我在此連接上綁定了兩個事件處理程序: 瀏覽器
<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
」。