动态生成的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 相关文章推荐
JavaScript 验证浏览器是否支持javascript的方法小结
May 17 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
Jul 31 Javascript
javascript权威指南 学习笔记之变量作用域分享
Sep 28 Javascript
intro.js 页面引导简单用法 分享
Aug 06 Javascript
jQuery 快速结束当前正在执行的动画
Nov 20 Javascript
JS对象转换为Jquery对象示例
Jan 26 Javascript
使用jQuery获取data-的自定义属性
Nov 10 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
May 17 Javascript
JS实现页面进入和返回定位到具体位置
Dec 08 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
Nov 03 Javascript
你可能不知道的前端算法之文字避让(inMap)
Jan 12 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
Jul 22 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调用Java对象的方法
2006/10/09 PHP
数据库的日期格式转换
2006/10/09 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
浅谈javascript中的加减时间
2016/07/12 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
Python global全局变量函数详解
2018/09/18 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
python Tensor和Array对比分析
2020/01/08 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
Python面试题集
2012/03/08 面试题
毕业自荐书
2013/12/09 职场文书
园林施工员岗位职责
2013/12/11 职场文书
办公室文员自荐书
2014/02/03 职场文书
2014年两会学习心得体会
2014/03/10 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
2014年学生会工作总结
2014/11/07 职场文书
赢在中国观后感
2015/06/02 职场文书
法人身份证明书
2015/06/18 职场文书
2015中学学校工作总结
2015/07/20 职场文书
Python爬取某拍短视频
2021/06/11 Python
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript