解决jQuery使用append添加的元素事件无效的问题


Posted in jQuery onAugust 30, 2018

jquery api官方的例子在新增的元素上添加事件

$(document).on("click",'#lyysb a',function(){
 if(!$(this).hasClass('cur')){
  $(this).addClass('cur');
 } 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添加的元素事件无效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 jQuery
jQuery中clone()函数实现表单中增加和减少输入项
May 13 jQuery
jQuery+Ajax实现用户名重名实时检测
Jun 01 jQuery
jQuery.form.js的使用详解
Jun 14 jQuery
jQuery操作DOM_动力节点Java学院整理
Jul 04 jQuery
jQuery之动画ajax事件(实例讲解)
Jul 18 jQuery
解决JQuery全选/反选第二次失效的问题
Oct 11 jQuery
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
JQuery中queue方法用法示例
Jan 31 jQuery
详解jQuery中的prop()使用方法
Jan 05 jQuery
jQuery三组基本动画与自定义动画操作实例总结
May 09 jQuery
jQuery 添加元素和删除元素的方法
Jul 15 jQuery
jQuery实现的简单手风琴效果示例
Aug 29 #jQuery
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 #jQuery
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
Aug 28 #jQuery
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 #jQuery
jQuery实现鼠标移到某个对象时弹出显示层功能
Aug 23 #jQuery
jquery获取select选中值的文本,并赋值给另一个输入框的方法
Aug 21 #jQuery
JQuery扩展对象方法操作示例
Aug 21 #jQuery
You might like
php4的session功能评述(三)
2006/10/09 PHP
解析csv数据导入mysql的方法
2013/07/01 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
用脚本调用样式的几种方法
2006/12/09 Javascript
javascript入门·对象属性方法大总结
2007/10/01 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
opencv3/C++实现视频背景去除建模(BSM)
2019/12/11 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
PHP开发的一般流程
2013/08/13 面试题
SQL注入攻击的种类有哪些
2013/12/30 面试题
信息技术培训感言
2014/03/06 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript