如果我将事件绑定到jQuery中的元素,我是否总是要从绑定它的完全相同的元素中取消绑定它?我可以解除孩子或父母的约束吗?我也在使用事件命名空间 - 这与情况有关吗?
<div id="id1">
<div id="id2">
<div id="id3">
hello
</div>
</div>
</div>
$("#id2").bind("click.mynamespace", function() { alert("hi!");});
$("#id1").unbind("click.mynamespace"); //will this work?
$("#id3").unbind("click.mynamespace"); //will this work?
在jQuery文档中似乎没有提到它。
答案 0 :(得分:3)
不,这不是一个事件,因此不会冒泡。所有与事件相关的函数都将完全 jQuery对象中的元素。
如果您需要此行为,只需选择所有元素:
// element and its children
$('#id1').find('*').andSelf().unbind('click.mynamespace');
// element and its parents
$('#id3').parents().andSelf().unbind('click.mynamespace');
从侧面说明,自jQuery 1.7起,.bind()
和.unbind()
已被弃用 - 请更好地使用.on()
和.off()
(在您的情况下使用相同的参数)