使用jQuery.load
动态将HTML内容加载到网页中时,“重新绑定”任何处理程序的最佳方法是什么?
通常在jQuery.ready
中绑定处理程序,但它们显然不适用于新加载的内容。这适用于在加载内容外部和内部使用的处理程序,因此只需将它们绑定到load
成功函数中就不太好了。
答案 0 :(得分:5)
订阅这些处理程序时,您可以使用.on
函数,该函数允许您订阅甚至不存在的DOM元素,并且在添加它们时,将完成订阅。 jQuery 1.7中引入了.on
函数。如果您使用的是旧版本,则可以使用.delegate
函数来实现jQuery 1.4.2中引入的相同效果。如果您使用的是更旧的版本,则可以使用.live
方法。
以下是您可以订阅某个元素的点击事件的示例(现有或将来还会存在):
$('#someParentElement').on('click', '#someElement', function() {
});
答案 1 :(得分:3)
您需要将新内容的事件委托给静态父元素,例如:
$("#myDiv").load(myUrl);
$("#myDiv").on('click', '#myElement', function() {
// do stuff when #myElement (which was part of the HTML
// returned in the load() call) is clicked.
})
这假设您正在使用jQuery 1.7+,如果没有,请使用delegate()
:
$("#myDiv").delegate('#myElement', 'click', function() {
// do stuff when #myElement (which was part of the HTML
// returned in the load() call) is clicked.
})