解决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为某个div加入行样式
Jun 09 jQuery
JQuery EasyUI的一些常用组件
Jul 12 jQuery
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
Oct 20 jQuery
JQuery 又谈ajax局部刷新
Nov 27 jQuery
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 jQuery
[原创]jquery判断元素内容是否为空的方法
May 04 jQuery
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 jQuery
jQuery实现的点击图片居中放大缩小功能示例
Jan 16 jQuery
使用jQuery实现掷骰子游戏
Oct 24 jQuery
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
May 29 jQuery
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 29 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生成静态页面详解
2006/12/05 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
ajax更新数据后,jquery、jq失效问题
2011/03/16 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
vscode自定义vue模板的实现
2021/01/27 Vue.js
利用Python抓取行政区划码的方法
2016/11/28 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
破解安装Pycharm的方法
2018/10/19 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
如何提高JDBC的性能
2013/04/30 面试题
自我评价的正确写法
2013/09/19 职场文书
请假条格式范文
2014/04/10 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python