1

如果我将一个事件绑定到 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 文档中的任何地方似乎都没有提到它。

4

1 回答 1

3

不,这不是一个事件,因此不会冒泡。所有与事件相关的函数都将作用于jQuery对象中的元素。

如果您想要这种行为,只需选择所有元素:

// element and its children
$('#id1').find('*').andSelf().unbind('click.mynamespace');
// element and its parents
$('#id3').parents().andSelf().unbind('click.mynamespace');

附带说明一下,.bind()并且.unbind()从 jQuery 1.7 开始已被弃用 - 更好地使用.on().off()而不是(在您的情况下使用相同的参数)。

于 2012-06-08T09:20:48.543 回答