这里有一个小问题。我在我的网站上有一个帖子流,每个帖子都有执行不同动作的按钮,这些动作现在在我的$(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