动态生成的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 Tabs插件宿主IFRAMES
Jan 01 Javascript
Web 前端设计模式--Dom重构 提高显示性能
Oct 22 Javascript
从js向Action传中文参数出现乱码问题的解决方法
Dec 29 Javascript
Node.js中使用mongoskin操作mongoDB实例
Sep 28 Javascript
javaScript中的原型解析【推荐】
May 05 Javascript
jQuery学习笔记之回调函数
Aug 15 Javascript
js监听input输入框值的实时变化实例
Jan 26 Javascript
Bootstrap table表格简单操作
Feb 07 Javascript
Vue.JS项目中5个经典Vuex插件
Nov 28 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
Dec 18 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
Apr 12 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
Dec 12 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
2020最新CPU的性能排名
2020/04/02 数码科技
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
Vue axios获取token临时令牌封装案例
2020/09/11 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
python中list循环语句用法实例
2014/11/10 Python
Python中enumerate函数代码解析
2017/10/31 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Python语言进阶知识点总结
2019/05/28 Python
redis数据库及与python交互用法简单示例
2019/11/01 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
岗位职责的定义
2013/11/10 职场文书
领导干部培训感言
2014/01/23 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
文艺晚会主持词
2014/03/24 职场文书
2015年班组工作总结
2015/04/20 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
python基础之爬虫入门
2021/05/10 Python
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL