动态生成的DOM不会触发onclick事件的原因及解决方法


Posted in Javascript onAugust 06, 2016

最近朋友在做一个项目的时候,遇到动态加载微博内容,然后点击“展开评论”后获取该微博的所有评论。这里使用了动态加载的<span mid='123456789′ class='get_comment'>点击加载评论</span>。

然后再写

$(“.get_comment).click(function(){

//响应事件逻辑

})

发现click事件并不会触发,使用控制台侦听也木有错误。百思不得其解时,

因为我在以前做搜狐家居商城的运费管理时,也曾遇到,因此将焦点落在动态加载上。

记得当时本人用的是行内事件,在动态加载时用的是行内事件。如 var oBtn = '<a onclick="Freight.delete_curr_citys();" href="javascript:void(0);">删除</a>'; 其实Freight为对象.delete_curr_citys为此对象的一个方法。

当然也可以使用jquery的live()函数,重写响应逻辑:

$(“.get_comment”).live(‘click', function() {
var mid = $(this).attr(“mid”);
alert(mid);
});

这时候,jquery可以响应span 的click事件了。这里用到live函数委派事件,主要用于动态生成的HTML的事件响应。关于live()函数的作用,它最直观的好处在于可以一直 “监听”客户端浏览器操作,对于新增的DOM节点也会有效,而不需要重新绑定。也许是因为这个“监听”可能会不断的去绑定、判断,会造成web应用性能问题,大家可以根据项目的复杂性选择性使用。关于live函数,这里有非常详细的阐述:

定义和用法

live() 方法为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。

通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素)。

语法

$(selector).live(event,data,function)

参数 描述

event 必需。规定附加到元素的一个或多个事件。

由空格分隔多个事件。必须是有效的事件。 

data 可选。规定传递到该函数的额外数据。

function 必需。规定当事件发生时运行的函数。

以上这篇动态生成的DOM不会触发onclick事件的原因及解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery自动完成插件(autocomplete)应用之PHP版
Dec 15 Javascript
使用javascript控制cookie显示和隐藏背景图
Feb 12 Javascript
JavaScript Sort 的一个错误用法示例
Mar 20 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
Jul 12 Javascript
JS 对java返回的json格式的数据处理方法
Dec 05 Javascript
vue动态组件实现选项卡切换效果
Mar 08 Javascript
纯js实现页面返回顶部的动画(超简单)
Aug 10 Javascript
基于vue-video-player自定义播放器的方法
Mar 21 Javascript
如何解决.vue文件url引用文件的问题
Jan 18 Javascript
node 标准输入流和输出流代码实例
Sep 19 Javascript
JavaScript实现tab栏切换效果
Mar 16 Javascript
vue总线机制(bus)知识点详解
May 10 Javascript
Google 地图获取API Key详细教程
Aug 06 #Javascript
关于动态生成dom绑定事件失效的原因及解决方法
Aug 06 #Javascript
深入理解JS DOM事件机制
Aug 06 #Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
Aug 06 #Javascript
用JS写的一个Ajax库(实例代码)
Aug 06 #Javascript
angularJS 如何读写缓冲的方法(推荐)
Aug 06 #Javascript
JS获取和修改元素样式的实例代码
Aug 06 #Javascript
You might like
php 获取客户端的真实ip
2009/11/30 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
AngularJS实现tab选项卡的方法详解
2017/07/05 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
javascript实现评分功能
2020/06/24 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
Python最基本的输入输出详解
2015/04/25 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
python wsgiref源码解析
2021/02/06 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
html5绘制时钟动画
2014/12/15 HTML / CSS
WiFi云数码相框:Nixplay
2018/07/05 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
公司薪酬管理制度
2014/01/31 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
运动会宣传稿50字
2015/07/23 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
PyTorch中permute的使用方法
2022/04/26 Python