2012-08-16 94 views
3

如果我一个函数分配给一个变量foo的,有没有办法选择不具备的所有元素给定的,他们通过像$('.elementsWithClass').click(foo)结构分配结合选择所有没有绑定到给定函数的元素?

我的动机是我们有ajax请求替换部分DOM,我需要一个简单的方法来重新绑定不基于.live/.on的事件处理程序,因为我们在应用程序的某些部分控制事件冒泡。

+1

[测试如果事件处理程序绑定到jQuery中的元素](http://stackoverflow.com/questions/1236067/test-if-event-handler-is-bound-to-an-element-in -jquery) – MrOBrian 2012-08-16 18:36:02

回答

3

关于这样做的动机,由于它们被分配了$(".elementsWithClass").click(foo),所以应该在DOM更新后重新选择它们。

$("#container").load("/new/content.html", function() { 
    $(this).find(".elementSWithClass").click(foo); 
}); 

因为他们需要反弹,这必然意味着他们已经被更换,这意味着它不会做任何好他们根据他们是否有一个处理程序来选择。

+0

我建议在再次绑定之前解除绑定,因为在页面上可能有先前绑定的元素。或者防止foo内冒泡。例如:http://jsfiddle.net/gromer/QAyB5/。如果取消注销解除绑定行,则每次单击只会将一行写入控制台(单个函数调用)。评论时,您会为每个点击绑定获取一行。 – Gromer 2012-08-16 18:48:14

+0

@Gromer:这取决于DOM如何被替换。以我的例子来说,'#容器'内的所有内容都将被替换,因此不需要手动解除绑定。绑定只发生在#容器内。如果我们从'document'解除绑定,我们可能会解除一些不应该绑定的绑定。 – 2012-08-16 18:50:03

+0

啊,好点,因为容器内容被*取代*。好的电话,先生! – Gromer 2012-08-16 18:51:36

相关问题