解决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 相关文章推荐
Javascript代码混淆综合解决方案-Javascript在线混淆器
Dec 18 Javascript
心扬JS分页函数代码
Sep 10 Javascript
js arguments对象应用介绍
Nov 28 Javascript
jQuery控制TR显示隐藏的几种方法
Jun 18 Javascript
JQuery操作元素的css样式
Mar 09 Javascript
jQuery自定义滚动条完整实例
Jan 08 Javascript
JavaScript入门教程之引用类型
May 04 Javascript
在vue项目中引入vue-beauty操作方法
Feb 11 Javascript
js实现简单掷骰子效果
Oct 24 Javascript
详解小程序如何改变onLoad的执行时机
Nov 01 Javascript
vue实现放大镜效果
Sep 17 Javascript
vue实现列表拖拽排序的功能
Nov 02 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
简单易用的计数器(数据库)
2006/10/09 PHP
PHP echo()函数讲解
2019/02/15 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
浅谈vue父子组件怎么传值
2018/07/21 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
npm的lock机制解析
2019/06/20 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
微信跳一跳辅助python代码实现
2018/01/05 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
Unix/Linux开发面试题
2016/08/16 面试题
培训演讲稿范文
2014/01/12 职场文书
爱情保证书范文
2014/02/01 职场文书
读书小明星事迹材料
2014/05/03 职场文书
大学生创业计划书
2014/08/14 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书