如何在Javascript或jQuery中暂时禁用事件?

4

我想知道你们是否知道不同的方法来暂时禁用事件。让我更详细地解释一下:

假设我有一个div或按钮,它有一个订阅者来监听其onclick事件。为了防止双击时方法正在执行某些ajax操作,我们可以采取以下几种方式:

  1. 在方法完成其工作之前禁用按钮
  2. 在方法完成其工作之前取消绑定,然后再次绑定。
  3. 使用某种标记系统,例如布尔值,以防止方法多次运行。

那么是否有其他方法,可能是一些更有效和更好的实践的javascript技巧或jQuery技巧。

提前致谢。

3个回答

4

我只是给那个 div 或 button 添加了一些类,比如 'disabled'。然后在我注册到 onclick 事件的函数中,检查该类是否存在。如果存在,就直接返回。

除了您所述的方法,我想不出其他办法了。


1
我认为布尔标记是一种相当优雅的解决方案,而且你可以通过使用处理程序的属性来使其“封装”,就像这样:
$(someElement).click(myHandler);

function myHandler() {
    if (!myHandler.inProgress) {
        myHandler.inProgress = true;
        // Do stuff
        // Set it back to false later
    }
}

0

我想不出比你列出的更“棘手”或“优雅”的解决方案了。

禁用元素或删除绑定有什么效率问题吗?


在我们的情况下,实际上我并不喜欢我之前提到的解决方案,因此我认为JavaScript本身或像jQuery这样的库可能会提供快速而优雅的解决方案。 - Tarik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接