有没有办法重新绑定jQuery插件中引用的事件处理程序?

时间:2013-12-11 20:05:11

标签: javascript jquery jquery-plugins

我在我正在构建的网站上使用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;来阻止事件被解雇。我检查用户身份验证状态的逻辑正在运行。什么不起作用是禁用覆盖的click事件处理程序以强制用户在访问页面之前使用登录模式。我不确定我的原帖是否清楚。存储事件处理程序似乎是最好的选择......

第二次编辑:

我想出了如何使用命名空间的拙劣版本停止覆盖点击事件处理程序:

$('#lean_overlay').off('click', $(this).leanModal.close_modal);

删除事件处理程序有效,但重新绑定似乎不起作用。我似乎找不到一种简单的方法来重新绑定链接插件中的事件处理函数。想法?

1 个答案:

答案 0 :(得分:0)

所以,我无法找到“捕获”插件引用的事件处理程序。我的解决方案是制作我自己的叠加层并将其用于登录屏幕。完美的工作,因为它是矿井! :)