动态生成的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 相关文章推荐
js tab效果的实现代码
Dec 26 Javascript
JavaScript与DropDownList 区别分析
Jan 01 Javascript
javascript JSON操作入门实例
Apr 16 Javascript
ie与ff下的event事件使用介绍
Nov 25 Javascript
jQuery简单实现遍历数组的方法
Apr 14 Javascript
轻量级网页遮罩层jQuery插件用法实例
Jul 31 Javascript
理解Javascript图片预加载
Feb 23 Javascript
jQuery 操作input中radio的技巧
Jul 18 Javascript
原生js实现焦点轮播图效果
Jan 12 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
Feb 23 Javascript
jQuery简单实现MD5加密的方法
Mar 03 Javascript
Node.js 路由的实现方法
Jun 05 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的开合式多级菜单程序
2006/10/09 PHP
php 动态多文件上传
2009/01/18 PHP
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
python opencv肤色检测的实现示例
2020/12/21 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
HTML5的新特性(1)
2016/03/03 HTML / CSS
师德模范事迹材料
2014/06/03 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏