解决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.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
jQuery实现全选、反选和不选功能
Aug 16 jQuery
详解webpack3如何正确引用并使用jQuery库
Aug 26 jQuery
jQuery实现获取table中鼠标click点击位置行号与列号的方法
Oct 09 jQuery
jQuery中 DOM节点操作方法大全
Oct 12 jQuery
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 jQuery
jquery实现的分页显示功能示例
Aug 23 jQuery
jQuery实现可以计算进制转换的计算器
Oct 19 jQuery
jQuery实现手风琴特效
Jan 11 jQuery
jQuery实现影院选座订座效果
Apr 13 jQuery
html中两种获取标签内的值的方法
Jun 16 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
php实现的返回数据格式化类实例
2014/09/22 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
几种响应式文字详解
2017/05/19 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
非功能性需求都包括哪些方面
2013/10/29 面试题
如何现实servlet的单线程模式
2014/08/05 面试题
小学教师个人先进事迹材料
2014/05/17 职场文书
我的中国心演讲稿
2014/09/04 职场文书
纪委立案决定书
2015/06/24 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
小学体育课教学反思
2016/02/16 职场文书
《正比例》教学反思
2016/02/23 职场文书
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS