这是一个很重要的小问题。
我应该在执行之前运行.unbind('click') button.click(...?
基本上,如果为控件定义了一个事件,我是否应该在再次附加它之前取消它?我知道我使用'bind()'...
添加的是这种情况答案 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
它们......