这里有一点问题。我的网站上有一个帖子流,每个帖子都有执行我$(document).ready()
中设置的不同操作的按钮,添加帖子我做了一个AJAX调用,返回新的post元素的html,但是动作在我之前的$(document).ready()
中,不适用于此新元素,并在元素的$(document).ready()
中添加该元素会导致已发布元素中的按钮被复制。
知道如何解决这个问题吗?
答案 0 :(得分:3)
在documnet ready事件之后添加的元素不接受绑定事件(您称之为注释)。您可以使用.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
})
答案 1 :(得分:1)
如果您使用$(selector).live(eventType, handler)
,它应该向匹配该选择器的所有元素添加事件..即使它们是在加载DOM后添加的:
答案 2 :(得分:0)
如何更改折旧方法?
$( 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+
link:jQuery .live()
我遇到了同样的问题,最后一个问题出现在" .on"对我来说很好。
也许某人有同样的问题并且也使用它