jquery click事件应该在删除类时停止,但不会

时间:2015-04-28 17:59:54

标签: javascript jquery click removeclass

我有一个我不想点击的链接,所以我创建了以下代码:

<a class="not-allowed" id="new-user" href="users/new">New</a>

<script>
    $('.not-allowed').click(false);
</script>

在一些用户操作之后,我希望链接是可点击的,所以我使用以下代码:

$('#new-user').removeClass("not-allowed");

成功删除“不允许”类,但链接仍然无法点击。我不想让所有“不允许”点击,因为页面上还有更多内容仍然不应该被点击。如何使链接可以点击?

4 个答案:

答案 0 :(得分:3)

要停用链接,请参阅this question接受的答案。

要使这样的禁用链接再次可单击,不仅需要删除该类,而且还需要取消绑定禁用该链接的处理程序:

$('new-user').removeClass('not-allowed');
$('new-user').off('click');

答案 1 :(得分:2)

选项是将事件委托给锚点的公共父级。例如,如果#test是他们的祖先:

$('#test').on('click', '.not-allowed', false);

使用此功能,您可以自由添加或删除该类,而无需管理每个元素的单个单击事件。

答案 2 :(得分:0)

问题在于,当您调用$('.not-allowed').click(false);时,它会向该元素添加一个事件处理程序。删除该类不会删除该事件处理程序。所以解决方案是删除事件处理程序。您可以通过添加:

来完成此操作
$( "#new-user" ).unbind();

删除班级名称的任何地方。

Demo here

答案 3 :(得分:0)

我发现有两件事是错的,一件可能只是你问题上的错字。

首先,您要删除课程的选择器是&#39; new-user&#39;,它应该是&#39; #new-user&#39;。

其次,即使该类已被删除,click事件处理程序仍然绑定到该链接。

要删除click事件处理程序,您可以执行以下操作:

$('#new-user').off('click');