我正在建设的一个网站上使用leanModal插件。我目前正在处理管理员页面,并希望禁用覆盖单击事件处理程序,直到用户成功通过身份验证为止。我可以使用$("#lean_overlay").off("click");成功地解除所有事件处理程序的绑定,但是当特定事件处理程序存储在变量中时,我无法解除绑定/重新绑定。我使用的是jQuery 1.10.2和最新的leanModal。
下面是我的代码片段:
var overlay_event = $._data($('#lean_overlay')[0], "events");
$('#lean_overlay').off('click', overlay_event);
// insert code to check if user's logged in
$('#lean_overlay').on('click', overlay_event);这是使用jQuery 1.8+将处理程序存储在变量中的正确方法吗?
编辑:
我没有提到我已经尝试过event.preventDefault();和return false;来阻止事件的发生。我检查用户身份验证状态的逻辑正在工作。不起作用的是禁用覆盖层的单击事件处理程序,以强制用户在访问页面之前使用登录模式。我不确定这在我最初的帖子中是否清楚。存储事件处理程序似乎是最好的选择..。
第二版编辑:
我想出了如何阻止覆盖单击事件处理程序使用错误版本的名称空间触发:
$('#lean_overlay').off('click', $(this).leanModal.close_modal);
事件处理程序的删除可以工作,但重新绑定似乎不起作用。我似乎找不到重新绑定链接插件中的事件处理程序函数的简单方法。想法?
发布于 2013-12-12 14:57:55
因此,我无法找到“捕获”插件引用的事件处理程序。我的解决方案是创建自己的覆盖,并将其用于登录屏幕。因为它是我的!:)
https://stackoverflow.com/questions/20528878
复制相似问题