解决jquery中动态新增的元素节点无法触发事件问题的两种方法


Posted in Javascript onOctober 30, 2015

比如做一个ajax读取留言列表的时候,每条留言后面有个回复按钮,class为“reply”,如果你用的是$(".reply").click(function(){ //do something... }),想必后面通过ajax加载进来的列表中的回复按钮,点击事件会失效。

其实最简单的方法就是直接在标签中写onclick="",但是这样写其实是有点low的,最好的方式还是通过给类名绑定一个click事件。

解决jquery中动态新增的元素节点无法触发事件的问题有两种解决方法,如下:

为了达到更好的演示效果,假设在某个页面的body下有以下结构的代码:

<p id="pLabel">新加一条</p>
<ul id="ulLabel">
 <li class="liLabel">aaa1</li>
 <li class="liLabel">aaa2</li>
 <li class="liLabel">aaa3</li>
</ul>
<script type="text/javascript">
$("#pLabel").click(function(){
 $("#ulLabel").append('<li class="liLabel">aaaQ</li>'); //动态像ul的末尾追加一个新元素
});
</script>

方法一:使用live

live()函数会给被选的元素绑定上一个或者多个事件处理程序,并且规定当这些事件发生时运行的函数。通过live()函数适用于匹配选择器的当前及未来的元素。比如,通过脚本动态创建的元素。

实现如下:

$('.liLabel').live('click', function(){
 alert('OK');
});

方法二:使用on

可以通过on方法绑定事件,可以绑定到它的父级或者body中,实现如下:

$("#ulLabel").on('click','.liLabel',function(){
 alert('OK')
});
或者:
$("body").on('click','.liLabel',function(){
 alert('OK')
});

现在大家可以尝试尝试,是不是问题已经得到解决了,希望这篇文章能够真正的帮助大家。

Javascript 相关文章推荐
关于jquery.validate1.9.0前台验证的使用介绍
Apr 26 Javascript
jquery遍历checkbox的注意事项说明
Feb 21 Javascript
基于javascript实现随机颜色变化效果
Jan 14 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
Jun 21 Javascript
AngularJS中watch监听用法分析
Nov 04 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
Angular2安装angular-cli
May 21 Javascript
基于Vue实现页面切换左右滑动效果
Jun 29 Javascript
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
layer弹出子iframe层父子页面传值的实现方法
Nov 22 Javascript
JavaScript canvas实现雪花随机动态飘落
Feb 08 Javascript
vue 判断元素内容是否超过宽度的方式
Jul 29 Javascript
jQuery+Ajax实现无刷新分页
Oct 30 #Javascript
JavaScript中的定时器之Item23的合理使用
Oct 30 #Javascript
javascript字符串替换函数如何一次性全部替换掉
Oct 30 #Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 #Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
Oct 30 #Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
Oct 30 #Javascript
基于jQuery实现的美观星级评论打分组件代码
Oct 30 #Javascript
You might like
PHP Mysql编程之高级技巧
2008/08/27 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
PHP数组相关函数汇总
2015/03/24 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
纯文字版返回顶端的js代码
2013/08/01 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
2015/03/27 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
ES6学习教程之Promise用法详解
2020/11/22 Javascript
python双向链表实现实例代码
2013/11/21 Python
python optparse模块使用实例
2015/04/09 Python
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
Python 数据结构之旋转链表
2017/02/25 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
校园安全广播稿范文
2014/09/25 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
国家助学金感谢信
2015/01/21 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers