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

发布于 2024-11-05 04:13:17 字数 149 浏览 3 评论 0原文

这是一个小问题,但却很重要。

我应该在执行例如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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

太阳哥哥 2024-11-12 04:13:17

我知道我使用“bind()”添加的内容就是这种情况...

click(func...) 只是 bind('click',.. .)。

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

如果您无论如何都有对处理程序的引用,您可以这样做:

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

这仅删除事件处理程序 handler 并保持所有其他完整。


在这种情况下可能有趣的是 事件命名空间

如果你想绑定多个事件处理程序到一个元素,但你想防止重新绑定相同的事件处理程序(并且你没有对原始处理程序的引用),你可以使用命名空间:

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

更新:

bind 不会删除以前的处理程序。因此,如果您不想触发它们,则必须先取消绑定它们......

I know this is the case for those that I add using 'bind()'...

click(func...) is just a shortcut for bind('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:

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

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:

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

Update:

bind will not remove previous handlers. So if you don't want them to be triggered, you have to unbind them first...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文