Ove*_*esh 12 javascript jquery
使用jQuery,我想在不更改disabled给定按钮的属性的情况下,禁用所有单击事件.
我正在考虑检索click事件处理程序,解除绑定并存储它们(比如说,使用data()).
然后,一旦再次启用按钮,我就可以重新绑定它们.
Dav*_*ang 17
不难做到,因为jQuery已经将所有事件处理程序存储data()在元素本身上.您可以通过获取(和修改)此对象.data().events.
现在,您可以使用以下命令轻松保存对处理程序的引用:
events._click = events.click;
events.click = null;
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令恢复它们:
events.click = events._click;
events._click = null;
Run Code Online (Sandbox Code Playgroud)
请注意,这不会禁用通过事件冒泡/传播工作的事件.delegate()或事件绑定.live()的事件.要禁用它们,只需绑定一个阻止传播到祖先元素的新处理程序:
events._click = events.click;
events.click = null;
// Block .live() and .delegate()
$("#el").click(function (e) {
e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
在需要再次启用处理程序时,您甚至不需要取消绑定此阻止程序功能,因为events.click = events._click它将覆盖您刚刚与所有旧处理程序绑定的功能.
| 归档时间: |
|
| 查看次数: |
32087 次 |
| 最近记录: |