jQuery(ui)解除绑定事件的一般方法?

时间:2011-05-04 11:03:46

标签: jquery events unbind

这是一个很重要的小问题。

我应该在执行之前运行.unbind('click') button.click(...?

基本上,如果为控件定义了一个事件,我是否应该在再次附加它之前取消它?我知道我使用'bind()'...

添加的是这种情况

1 个答案:

答案 0 :(得分:2)

  

我知道我使用'bind()'...

添加的是这种情况

click(func...)只是bind('click',...)的快捷方式。

如果将相同的处理程序分配给控件,则应在再次附加之前将其删除。否则,处理程序将被执行多次。

如果你有一个对处理程序的引用,你可以这样做:

$element.unbind('click', handler);

这只会删除事件处理程序handler并保留所有其他处理程序。


在这种情况下,有趣的是event namespaces

如果要将多个事件处理程序绑定到一个元素,但是想要阻止重新绑定相同的事件处理程序(并且您没有引用原始处理程序),则可以使用名称空间:

$element.bind('click.onlyone', function()...);
$element.unbind('click.onlyone');
//or $element.unbind('.onlyone');
$element.bind('click.onlyone', function()...);

<强>更新

bind不会删除以前的处理程序。因此,如果您不希望触发它们,则必须首先unbind它们......