這裏有一個小問題。我在我的網站上有一個帖子流,每個帖子都有執行不同動作的按鈕,這些動作現在在我的$(document).ready()
中設置,添加帖子我做了一個AJAX調用,返回新帖子元素的html,但是我之前的動作$(document).ready()
不適用於此新元素,並將其添加到元素的$(document).ready()
中會導致已複製元素中的按鈕被複制。添加對通過AJAX添加的DOM元素的操作
任何想法如何解決這個問題?
這裏有一個小問題。我在我的網站上有一個帖子流,每個帖子都有執行不同動作的按鈕,這些動作現在在我的$(document).ready()
中設置,添加帖子我做了一個AJAX調用,返回新帖子元素的html,但是我之前的動作$(document).ready()
不適用於此新元素,並將其添加到元素的$(document).ready()
中會導致已複製元素中的按鈕被複制。添加對通過AJAX添加的DOM元素的操作
任何想法如何解決這個問題?
在documnet就緒事件之後添加的元素不接受綁定事件(您稱它爲ation)。您可以使用.click()
或.hover()
或.bind('click', function(){})
,兩者都不起作用。您可以使用jQuery .live()
或.delegate()
使用delegate
是因爲當你使用live
爲click
好得多(舉例來說)這意味着找你聽任何click
發生在你的文檔,並確定它是click
你在哪裏找或不?但與delegate
您限制了計算機進程找到您的click
的點擊次數。
$('.myinput').live('click', function(){
// do something if a click happened and it was on my input
})
$('.myDiv').delegate('.myinput', 'click', function(){
// do something if a click happened in my div and it was on my input
})
如果使用$(selector).live(eventType, handler)
應該事件添加到該選擇匹配的所有元素..即使DOM被加載後,他們被添加:
像@Mohsen說有方式來解決這個使用.live() 現在它的折舊和有替代方式:
如何更改折舊方法?
$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+
我有thesame問題,這最後一個用 「對」 對我來說工作正常。
也許有人有thesame問題,並用它太
委託方法沒有工作,也沒有激活與新添加的DOM元素的動作,但現場沒有方法,謝謝 – 8vius