jQuery动态创建的元素为啥不能绑定事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery动态创建的元素为啥不能绑定事件相关的知识,希望对你有一定的参考价值。

之前绑定了p元素都添加了事件,为什么动态生成创建的p元素,不能绑定事件?能讲出个道理吗?

参考技术A 当然不能,事件绑定是针对可以见元素的(加入到DOM树中的元素),当动态创建的元素加入DOM时,绑定事件早就执行过了,JS
不会自动检测新加入DOM
的元素并给它绑定事件,此时需要手动绑定一次,或者采用事件委派的方式。

jQuery动态添加元素无法触发绑定事件

 

用jquery动态添加元素后,发现给动态添加的元素无法触发事件。解决方案如下:

方法一:绑定live事件(live事件只在jquery1.9以下才支持,高版本不支持)。

1
2
3
$(".newBtn").live("click",function(){ ///jquery 1.9(不包括1.9)以下可以
               alert(‘这里是动态元素添加的事件‘);
           })

 

方法二:利用on()事件绑定 ($(ParentEle).on("click",".thisEle",function(){})

1
2
3
$("body").on("click", ".newBtn", function() {
              alert(‘这里是动态元素添加的事件‘);
          });<br>//这里的ParentEle是 thisEle的父辈元素或者祖先元素,ParentEle可以是document,也可以是body等。<br><br><br>//注意:如果此时调用的函数是外部定义好的函数,那在调用的时候不要加(),不然会跳过点击事件直接触发函数
  $("body").on("click", ".newBtn",aa );
 function aa(){
alert(‘这里是动态元素添加的事件‘);
}

以上是关于jQuery动态创建的元素为啥不能绑定事件的主要内容,如果未能解决你的问题,请参考以下文章

JQjq动态绑定事件.on()解绑事件off()

jquery on()绑定的点击事件在js动态新添加的元素上无效,请问为啥

为啥我应用jquery框架,对按钮绑定了一个监听事件后,按钮不能执行这个事件

JQuery .on() 没有将点击事件绑定到动态创建的元素[重复]

Jquery动态绑定事件处理函数 bind / on / delegate

将事件绑定到动态创建的 iframe 元素