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动态创建的元素为啥不能绑定事件的主要内容,如果未能解决你的问题,请参考以下文章
jquery on()绑定的点击事件在js动态新添加的元素上无效,请问为啥
为啥我应用jquery框架,对按钮绑定了一个监听事件后,按钮不能执行这个事件
JQuery .on() 没有将点击事件绑定到动态创建的元素[重复]