动态生成的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 ui dialog里调用datepicker的问题
Aug 06 Javascript
JS实现淘宝幻灯片效果的实现方法
Mar 22 Javascript
使用JS CSS去除IE链接虚线框的三种方法
Nov 14 Javascript
jQuery设置与获取HTML,文本和值的简单实例
Feb 26 Javascript
javascript的创建多行字符串的7种方法
Apr 29 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
Jun 16 Javascript
Javascript实现禁止输入中文或英文的例子
Dec 09 Javascript
RGB和YUV 多媒体编程基础详细介绍
Nov 04 Javascript
js时间查询插件使用详解
Apr 07 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 jQuery
详解vue-router 初始化时做了什么
Jun 11 Javascript
Vue头像处理方案小结
Jul 26 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
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
mysql 全文搜索 技巧
2007/04/27 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
php简单统计在线人数的方法
2016/05/10 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
解密效果
2006/06/23 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
[01:50]《我与DAC》之玩家:iG夺冠时的那面红旗
2018/03/29 DOTA
用Python遍历C盘dll文件的方法
2015/05/06 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
Python日志处理模块logging用法解析
2020/05/19 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
党员干部承诺书范文
2014/03/25 职场文书
三八妇女节演讲稿
2014/05/27 职场文书
优秀班组长事迹
2014/05/31 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书