动态生成的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实现的使用方向键控制光标在table单元格中切换
Nov 17 Javascript
Jquery选择器中使用变量实现动态选择例子
Jul 25 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
Sep 11 Javascript
JavaScript中的console.profile()函数详细介绍
Dec 29 Javascript
轻松掌握JavaScript中的Math object数学对象
May 26 Javascript
Javascript 获取鼠标当前的位置实现方法
Oct 27 Javascript
js实现HashTable(哈希表)的实例分析
Nov 21 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
Dec 08 Javascript
Vue数据驱动模拟实现4
Jan 12 Javascript
JS实现的新闻列表自动滚动效果示例
Jan 30 Javascript
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
javascript实现左右缓动动画函数
Nov 25 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
PHP学习笔记之一
2011/01/17 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
php-fpm配置详解
2014/02/12 PHP
php实现通过ftp上传文件
2015/06/19 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
Prototype的Class.create函数解析
2011/09/22 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
Python开发编码规范
2006/09/08 Python
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
介绍Python中的fabs()方法的使用
2015/05/14 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
会计大学生职业生涯规划书范文
2014/01/13 职场文书
大专生自我评价
2014/01/28 职场文书
婚纱店策划方案
2014/05/22 职场文书
应届生求职信
2014/05/31 职场文书
家长给老师的感谢信
2015/01/20 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
医德医风学习心得体会
2016/01/25 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书