2011-09-21 55 views
1

這裏有一個小問題。我在我的網站上有一個帖子流,每個帖子都有執行不同動作的按鈕,這些動作現在在我的$(document).ready()中設置,添加帖子我做了一個AJAX調用,返回新帖子元素的html,但是我之前的動作$(document).ready()不適用於此新元素,並將其添加到元素的$(document).ready()中會導致已複製元素中的按鈕被複制。添加對通過AJAX添加的DOM元素的操作

任何想法如何解決這個問題?

回答

3

在documnet就緒事件之後添加的元素不接受綁定事件(您稱它爲ation)。您可以使用.click().hover().bind('click', function(){}),兩者都不起作用。您可以使用jQuery .live().delegate()

使用delegate是因爲當你使用liveclick好得多(舉例來說)這意味着找你聽任何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 
}) 
+0

委託方法沒有工作,也沒有激活與新添加的DOM元素的動作,但現場沒有方法,謝謝 – 8vius

1

如果使用$(selector).live(eventType, handler)應該事件添加到該選擇匹配的所有元素..即使DOM被加載後,他們被添加:

http://api.jquery.com/live/

0

像@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+ 

鏈接:jQuery .live()

我有thesame問題,這最後一個用 「對」 對我來說工作正常。

也許有人有thesame問題,並用它太