jquery 当 class 被移除时,点击事件应该停止,但它并没有
jquery click event should stop when class is removed but it does not
我有一个 link 不想被点击,所以我创建了以下代码:
<a class="not-allowed" id="new-user" href="users/new">New</a>
<script>
$('.not-allowed').click(false);
</script>
经过一些用户操作后,我希望 link 可以点击,所以我使用以下代码:
$('#new-user').removeClass("not-allowed");
class "not-allowed" 已成功删除,但 link 仍然无法点击。我不想让所有 "not-allowed" 都可以点击,因为页面上还有更多内容不应该被点击。如何使 link 可点击?
一个选项是将事件委托给锚点的共同父级。例如,如果 #test
是他们的祖先:
$('#test').on('click', '.not-allowed', false);
使用它您可以自由添加或删除 class,而无需管理每个元素的单独点击事件。
问题是,当您调用 $('.not-allowed').click(false);
时,它会向该元素添加一个事件处理程序。删除 class 不会删除该事件处理程序。所以解决方案是删除事件处理程序。您可以通过添加:
$( "#new-user" ).unbind();
删除 class 名称的任何位置。
我发现有两处不对,其中一处可能只是您问题中的错字。
首先,您要删除 class 的选择器是 'new-user',它应该是“#new-user”。
其次,即使删除了 class,点击事件处理程序仍然绑定到 link。
要删除点击事件处理程序,您可以这样做:
$('#new-user').off('click');
要禁用 link,请参阅 this question 的已接受答案。
然而,要使这样一个禁用的 link 再次可点击,不仅需要删除 class,还需要取消绑定禁用 link 的处理程序]:
$('new-user').removeClass('not-allowed');
$('new-user').off('click');
我有一个 link 不想被点击,所以我创建了以下代码:
<a class="not-allowed" id="new-user" href="users/new">New</a>
<script>
$('.not-allowed').click(false);
</script>
经过一些用户操作后,我希望 link 可以点击,所以我使用以下代码:
$('#new-user').removeClass("not-allowed");
class "not-allowed" 已成功删除,但 link 仍然无法点击。我不想让所有 "not-allowed" 都可以点击,因为页面上还有更多内容不应该被点击。如何使 link 可点击?
一个选项是将事件委托给锚点的共同父级。例如,如果 #test
是他们的祖先:
$('#test').on('click', '.not-allowed', false);
使用它您可以自由添加或删除 class,而无需管理每个元素的单独点击事件。
问题是,当您调用 $('.not-allowed').click(false);
时,它会向该元素添加一个事件处理程序。删除 class 不会删除该事件处理程序。所以解决方案是删除事件处理程序。您可以通过添加:
$( "#new-user" ).unbind();
删除 class 名称的任何位置。
我发现有两处不对,其中一处可能只是您问题中的错字。
首先,您要删除 class 的选择器是 'new-user',它应该是“#new-user”。
其次,即使删除了 class,点击事件处理程序仍然绑定到 link。
要删除点击事件处理程序,您可以这样做:
$('#new-user').off('click');
要禁用 link,请参阅 this question 的已接受答案。
然而,要使这样一个禁用的 link 再次可点击,不仅需要删除 class,还需要取消绑定禁用 link 的处理程序]:
$('new-user').removeClass('not-allowed');
$('new-user').off('click');