解决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 判断字符串是否为数字的简单方法
Jul 25 Javascript
javascript 函数参数限制说明
Nov 19 Javascript
关于JavaScript中var声明变量作用域的推断
Dec 16 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
Dec 27 Javascript
JavaScript中提前声明变量或函数例子
Nov 12 Javascript
基于jQuery实现的扇形定时器附源码下载
Oct 20 Javascript
Javascript函数中的arguments.callee用法实例分析
Sep 16 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
Sep 23 Javascript
js实现弹窗居中的简单实例
Oct 09 Javascript
Vue.JS入门教程之自定义指令
Dec 08 Javascript
了解重排与重绘
May 29 Javascript
JS代码实现页面切换效果
Jan 10 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中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
jQuery中prevAll()方法用法实例
2015/01/08 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python编程之多态用法实例详解
2015/05/19 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
python属于跨平台语言码
2020/06/09 Python
网络方面基础面试题
2012/11/16 面试题
争先创优公开承诺书
2014/08/30 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
走群众路线学习笔记
2014/11/06 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
党员证明模板
2015/06/19 职场文书
环保建议书作文500字
2015/09/14 职场文书
七年级英语教学反思
2016/02/15 职场文书
中学音乐课教学反思
2016/02/18 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
解析Java中的static关键字
2021/06/14 Java/Android
JavaScript组合继承详解
2021/11/07 Javascript
Python中with上下文管理协议的作用及用法
2022/03/18 Python
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers