1

当用于jQuery.load将 HTML 内容动态加载到网页中时,“重新绑定”任何处理程序的最佳方法是什么?

通常你在 中绑定处理程序jQuery.ready,但它们显然不适用于新加载的内容。这适用于在加载内容的外部和内部使用的处理程序,因此仅将它们绑定到load成功函数中并不是很好。

4

2 回答 2

5

订阅这些处理程序时,您可以使用.on允许您订阅甚至不存在的 DOM 元素的功能,并且在添加它们时订阅将完成。该.on函数是在 jQuery 1.7 中引入的。如果您使用的是旧版本,您可以使用该.delegate功能来实现与 jQuery 1.4.2 中引入的相同的效果。如果您使用的是更旧的版本,则可以使用该.live方法。

这是一个如何订阅某个元素的点击事件的示例(现有或尚不存在,将来会添加):

$('#someParentElement').on('click', '#someElement', function() {

});
于 2012-03-20T21:30:43.070 回答
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.
})
于 2012-03-20T21:31:46.930 回答