Jquery 如何有选择地解除元素上委托事件的绑定?

Jquery 如何有选择地解除元素上委托事件的绑定?,jquery,Jquery,考虑以下代码: 孩子1 孩子2 jQuery应该可以 $(".parent2 .child").unbind("mouseover mouseout"); 编辑 由于动态插入了.child,请尝试以下操作: $(".parent2").find(".child").unbind("mouseover mouseout"); 我认为您应该使用该文档,因为它是绑定的,然后找到这些子项并执行off() 我使用修改后的标记进行了测试,假设您没有正确地使用 <div class="pare

考虑以下代码:


孩子1
孩子2
jQuery应该可以

$(".parent2 .child").unbind("mouseover mouseout");
编辑
由于动态插入了
.child
,请尝试以下操作:

$(".parent2").find(".child").unbind("mouseover mouseout");
我认为您应该使用该文档,因为它是绑定的,然后找到这些子项并执行
off()

我使用修改后的标记进行了测试,假设您没有正确地使用

<div class="parent1">
      <div class="child">child1</div>
<div>...

是否动态附加了
.child
?是@Louys。由于输入错误,子项被动态插入到DOM中。你的解决方案差一点。它删除了具有.child类的所有元素的绑定
<div class="parent1">
      <div class="child">child1</div>
<div>...
<div class="parent1">
  <div class="child">child1</div>
</div>
<div class="parent2">
  <div class="child">child2</div>
</div>
$(document).off("mouseover mouseout", ".child").find('.child').filter(function() {
  return !$(this).parents(".parent2").length;
}).on("mouseover mouseout", function() {
 console.log("new " + $(this).text());
});