2013-06-03 34 views
3

我知道的和研究,結合事件.on().live().click(),等我知道.live()在1.9+棄用多種方式結合。我遇到的問題是將動態DOM元素綁定到事件。jQuery的事件與動態加載的元素

我有一個div包含鏈接和分頁。這些鏈接是通過AJAX動態加載的。我想覆蓋這些鏈接的綁定事件,所以我使用.unbind()並嘗試.on()。問題是這些動態加載的鏈接沒有綁定。我想這是因爲選擇器$('#id_of_links')與前一組鏈接一起被緩存。

問題: 是否可以綁定已加載的網頁上的所有元素,在任何時間點,而無需在用戶點擊鏈接下頁設置回調?

回答

11

動態添加元素,必須將功能結合到

$('#PARENT').on('click', '#DYNAMICALLY_ADDED_CHILD', function(){ CODE HERE }); 

家長應該在DOM樹已經存在它的父母之一...

的更多信息:http://api.jquery.com/on/

+0

謝謝。有沒有辦法動態地解除綁定事件? –

+0

。.off()方法與.on()相反,你可以檢查http://api.jquery.com/off/我還沒有嘗試過,但我想它會去的東西像$('#PARENT')。off('click','#DYNAMICALLY_ADDED_CHILD',null); – YomY

-2

您不能綁定的所有元素,甚至沒有在這個頁面尚未加載,而無需回調方法/函數或函數,將循環並保持檢查是否具有特定屬性或特性的元素將有合適的功能綁定到它,這可能會導致內存泄漏隨着時間的推移。

+1

你可以將事件委託給父母(請參閱@yomy答案)。這樣,只有一個元素會與事件相關聯,並且只有在特定的子元素(在on方法中提及)纔會觸發事件時纔會觸發它。這是內存泄漏的反面;) –

+0

@ CyrilN.Alright,謝謝你的顯示。我需要閱讀更多關於'.on()'方法的特性! –

+1

你應該,這是非常有趣的,它將在很大程度上幫助你在未來:) –