在event.preventDefault()之后jQuery .off(unbind)无法正常工作

时间:2015-11-18 10:59:09

标签: javascript jquery

这个问题尚未通过解决方案得到解决,但它仍然无效。

问题是如果没有点击保存按钮,我想要禁用链接(尝试覆盖onbeforeunload函数)。

我的页面结构如下所示:

<ul class="nav">
    <li><a class="noclic" href="..."></a>
    </li>
    <li><a class="noclic" href="..."></a>
    </li>
    <li><a class="noclic" href="..."></a>
    </li>
</ul>
<button type="button" class="save">Save</button>
<form>...</form>
<button type="button" class="save">Save</button>

这是我的jQuery:

$(document).ready(function () {
    $('.noclic').on('click', function (e) {
        //(I also display a confirm modal)
        e.preventDefault();
        var $this = $(this);
        console.log("locked");
    });
    $('.save').click(function () {
        $('.noclic').off('click');
        console.log("unlocked");
    });
});

当我点击导航链接时,控制台会显示&#34;已锁定&#34;信息。 但是当点击按钮时,&#34;解锁&#34;控制台在消失之前快速显示,并且event.preventDefault仍在运行。

我做错了什么?!

1 个答案:

答案 0 :(得分:0)

两个问题 1)您的按钮是“提交”按钮,因此,当您单击时,页面将重新加载。你必须将它们改为

<button type="button">

2)你的按钮有“保存”类,但你使用$(“#save”)而不是$(“.save”)来引用它们