解决jQuery使⽤append添加的元素事件⽆效的问题jquery api官⽅的例⼦在新增的元素上添加事件
$(document).on("click",'#lyysb a',function(){
if(!$(this).hasClass('cur')){
$(this).addClass('cur');
jquery在一个元素后追加标签} else {
$(this).removeClass('cur');
}
});
on() ⽅法在被选元素及⼦元素上添加⼀个或多个事件处理程序。
⾃ jQuery 版本 1.7 起,on() ⽅法是 bind()、live() 和 delegate() ⽅法的新的替代品。
注意:使⽤ on() ⽅法添加的事件处理程序适⽤于当前及未来的元素(⽐如由脚本创建的新元素)。
提⽰:如需移除事件处理程序,请使⽤ off() ⽅法。
提⽰:如需添加只运⾏⼀次的事件然后移除,请使⽤ one() ⽅法。
*把事件绑定在docunmet就和原来的live⽅法没有区别了。原先的live()⽅法,处理函数是默认绑定在document对象上不能变的,如果DOM嵌套结构很深,事件冒泡通过⼤量祖先元素会导致较⼤的性能损失。⽽使⽤.on()⽅法,事件只会绑定到$()函数的选择符表达式匹配的元素上,因此可以精确地定位到页⾯中的⼀部分,⽽事件冒泡的开销也可以减少。
例如我会在zkdiv中动态添加多个class=”zk”的dom节点,也想对动态增加的节点绑定相同的事件则可以通过以下代码实现
<div id="zkdiv">
<input type="button" value="展开" id="zk" class="zk"/> <br>
</div>
//展开按钮点击触发事件
$("#zkdiv").on("click",".zk",function(){
console.log("on 点击⼀次");
});
var html2 = "<input type='button' class='zk' value='新⽣成的展开' />";
$("#zkdiv").append(html2);
*这样⼀来处理函数就绑定到#zkdiv的选择器上去了,事件冒泡导致的性能损失会⼤⼤降低(使⽤该⽅法时要确保.on前⾯的选择器能选择到对象否则不起作⽤)
click是点击事件,但是在页⾯加载完之后,jquery事件新添加的元素,⽤click的话是⽆法获取元素的,这个时候要⽤on去获取元素事件,简单的说页⾯加载完成时候页⾯显⽰的元素可以⽤on,也可以⽤click,但是页⾯加载完成之后后期再追加的元素只能⽤on。
以上这篇解决jQuery使⽤append添加的元素事件⽆效的问题就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论