Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery:click函数在removeClass()之后仍然有效_Jquery - Fatal编程技术网

JQuery:click函数在removeClass()之后仍然有效

JQuery:click函数在removeClass()之后仍然有效,jquery,Jquery,我试图在类上启用事件侦听器,但它不起作用 DOM元素: <button class="btn btn-warning shopping"> Shop </button> 购物类已被删除,但仍会触发操作 为此,您需要使用事件委派 $('body').on('click', '.shopping', function(e){ 在上面的代码中,我使用了body作为示例,但您必须在其上使用静态最近元素。Cause 首先,为了解释为什么仍然会得到事件的代码响应,您需要了解cli

我试图在类上启用事件侦听器,但它不起作用

DOM元素:

<button class="btn btn-warning shopping"> Shop </button>

购物类已被删除,但仍会触发操作

为此,您需要使用
事件委派

$('body').on('click', '.shopping', function(e){
在上面的代码中,我使用了
body
作为示例,但您必须在其上使用静态最近元素。

Cause 首先,为了解释为什么仍然会得到事件的代码响应,您需要了解
click()
在代码运行时将事件侦听器附加到元素。当侦听器连接到由
$('.shopping')
选择的元素,而不是选择器
$('.shopping')
本身时,元素随后如何更改并不重要

解决方案 您真正需要的是创建一个委托事件处理程序。这将在运行代码时,在事件时间应用选择器,而不是

您应该将委派的事件处理程序连接到不更改的祖先元素。您应该选择一个您知道将始终存在的祖先,但是如果没有其他元素更接近所需元素,则
文档
是最佳默认值

$(document).on('click', '.shopping', function(e){
这将在事件时应用过滤器时起作用。当类被删除时,
单击
函数将不会被调用

笔记:
  • 切勿将
    body
    用于委托事件,因为它有一个与样式相关的错误(基本上,0计算的body height将阻止鼠标事件冒泡到
    body
  • 如果没有其他更接近/方便的方法,请始终使用
    文档
    作为默认值
  • document
    有一个额外的好处,文档总是存在的,而且事件会在以后发生,因此您不需要将事件注册码放入准备好文档的处理程序中
您显示给我们的代码有一个输入错误,URL没有字符串。请确保这不是您真正的代码。是的,您将在成功后删除该类,因此在此之后它将不起作用…事实上,我有一个输入错误。它仍然在工作,如果其他一切都失败了,试试看。@BhojendraNepal等等。。我来举一个例子,虽然我很不愿意同意这样一个粗鲁的用户,但这个解决方案实际上是有效的,因为事件委派将解决这个问题。@BhojendraNepal和downvorters:检查这两个例子,这是疯狂的counterintuitive@Brewal:不太好。委派事件中的选择器在事件发生时运行,因此类可以随心所欲地来来去去,并且在它们存在时仍然匹配。。
$(document).on('click', '.shopping', function(e){