2012-05-03 52 views
1

我有一個頁面通過Ajax加載一些內容,並且還通過.on()方法將事件綁定到新的通知元素。在jQuery中獲取由.on()綁定的所有事件

是否有無法獲得<div class="inner">上的所有綁定事件? 我已經嘗試$("div.inner").data('events')控制檯所有內容加載, 後,但並沒有什麼,但undefined

HTML:

<div id="out"><p></p></div>​ 

的JavaScript:(不是真正的ajax,只是模擬)

var innDiv = '<div class="inner">inner</div>' + 
'<div class="inner">inner</div>' + 
'<div class="inner">inner</div>'; 

$(document).on('click','.inner', function(){$(this).toggleClass("green")}); 

setTimeout('$("#out").append(innDiv)',2000);​ 

這裏是jsfiddle Code演示。

+0

爲什麼你需要這個? –

+4

你的例子中的事件被綁定到'document'而不是'.inner' – Yoshi

回答

3

既然你綁定你的事件document元素,試試這個:

$(document).data("events") 
0

對不起我的壞,在這種情況下,如果它是一個現場活動。

$('.target').live('click', function foo(){ }); 

$('containerObj').on('click', 'target', function foo(){ }); 

你可能要檢查你正在結合現場活動對象的事件的數據。

如果處於文檔級別,則可能需要檢查文檔對象的事件或事件綁定到的目標容器。即

從您所做的元素中刪除活動附加事件。

$('containerObj').off('click', 'target', function foo(){ }); 

希望它有幫助。

+0

這就是他已經做過的事情:*「我試過$(」div.inner「)。data('events')」*不行。 –

+0

現在檢查,希望現在有幫助。 –

4

從jQuery 1.8中,$(element).data(「events」)被刪除。但出於調試目的,使用$._data(element, "events")可以獲取綁定到元素上的事件。由於它不是公共界面,因此未來可能無法使用。

檢查jQuery發佈日誌here