动态生成的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.boxy对话框插件代码
Oct 26 Javascript
innerHTML在IE中报错解决方案
Dec 15 Javascript
第五章之BootStrap 栅格系统
Apr 25 Javascript
Highcharts学习之坐标轴
Aug 02 Javascript
Vue兼容ie9的问题全面解决方案
Jun 19 Javascript
JS实现的JSON序列化操作简单示例
Jul 02 Javascript
微信小程序之判断页面滚动方向的示例代码
Aug 30 Javascript
在vue项目中引用Iview的方法
Sep 14 Javascript
jquery.pagination.js分页使用教程
Oct 23 jQuery
js中null与空字符串&quot;&quot;的区别讲解
Jan 17 Javascript
详解package.json版本号规则
Aug 01 Javascript
js实现全选和全不选功能
Jul 28 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
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
用定制的PHP应用程序来获取Web服务器的状态信息
2006/10/09 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
JavaScript 事件系统
2010/07/22 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
python 中if else 语句的作用及示例代码
2018/03/05 Python
对python中的argv和argc使用详解
2018/12/15 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
老师给学生的表扬信
2014/01/17 职场文书
家长写给老师的建议书
2014/03/13 职场文书
《假如》教学反思
2014/04/17 职场文书
预备党员公开承诺书
2014/05/28 职场文书
五四演讲稿范文
2014/09/03 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
小学班主任自我评价
2015/03/11 职场文书
HTML+VUE分页实现炫酷物联网大屏功能
2021/05/27 Vue.js
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL