javascript – 如何暂时禁用按钮上的点击事件,而不会实际禁用它?

前端之家收集整理的这篇文章主要介绍了javascript – 如何暂时禁用按钮上的点击事件,而不会实际禁用它?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用jQuery,我想在不更改给定按钮的禁用属性的情况下,禁用所有点击事件.

我正在考虑检索点击事件处理程序,解除绑定并存储它们(比如说使用data()).

然后一旦再次启用按钮,我可以重新绑定它们.

解决方法

不难做,因为jQuery已经将其所有的事件处理程序作为data()存储在元素本身上.您可以通过.data().事件获取(和修改)此对象.

在您的控制台中尝试$(“#portalLink a”).data().events.click = null,以禁用此页面左上方的“StackExchange”下拉列表.

现在,您可以轻松地保存对处理程序的引用:

events._click = events.click;
 events.click = null;

然后使用以下命令恢复它们:

events.click = events._click;
 events._click = null;

请注意,这不会禁用通过.delegate()或.live()绑定的事件,因为它们通过事件冒泡/传播工作.要禁用它们,只需将阻止传播的新处理程序绑定到祖先元素:

events._click = events.click;
 events.click = null;
 // Block .live() and .delegate()
 $("#el").click(function (e) {
     e.stopPropagation();
 });

当您再次启用处理程序时,甚至不需要解除此阻止程序的功能,因为events.click = events._click将覆盖刚刚与所有旧处理程序绑定的函数.

原文链接:https://www.f2er.com/js/154558.html

猜你在找的JavaScript相关文章