jQuery.bind用jQuery.load加载的东西

时间:2012-03-20 21:29:27

标签: javascript jquery jquery-load

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

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

2 个答案:

答案 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.
})