在jQuery中解除绑定泡沫吗?

时间:2012-06-08 09:19:15

标签: jquery javascript-events

如果我将事件绑定到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文档中似乎没有提到它。

1 个答案:

答案 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()(在您的情况下使用相同的参数)