jQuery (ui) 解除事件绑定的一般方法?
这是一个小问题,但却很重要。
我应该在执行例如button.click(...之前运行.unbind('click')吗?
基本上,如果为控件定义了一个事件,我是否应该在再次附加它之前取消附加它?我知道这是这种情况那些我使用“bind()”添加的...
It's a small question yet important.
Should I run .unbind('click') before doing e.g. button.click(... ?
Basically, if there's an event defined for a control, am I supposed to unattach it before attaching it again? I know this is the case for those that I add using 'bind()'...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
click(func...)
只是bind('click',.. .
)。如果您为控件分配相同处理程序,则应在再次附加之前将其删除。否则处理程序将被执行多次。
如果您无论如何都有对处理程序的引用,您可以这样做:
这仅删除事件处理程序
handler
并保持所有其他完整。在这种情况下可能有趣的是 事件命名空间:
如果你想绑定多个事件处理程序到一个元素,但你想防止重新绑定相同的事件处理程序(并且你没有对原始处理程序的引用),你可以使用命名空间:
更新:
bind
不会删除以前的处理程序。因此,如果您不想触发它们,则必须先取消绑定
它们......click(func...)
is just a shortcut forbind('click',...
).If you assign the same handler to the control, then you should remove it before attach again. Otherwise the handler will be executed more than once.
If you have a reference to the handler anyway you can just do:
This removes only the event handler
handler
and leaves all the others intact.Maybe interesting in this context are event namespaces:
If you want to bind multiple event handlers to an element but you want to prevent rebinding the same event handler (and you have no reference to the original handler), you can use namespaces:
Update:
bind
will not remove previous handlers. So if you don't want them to be triggered, you have tounbind
them first...