2011-09-21 94 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问题,并用它太