动态生成的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压缩工具 yuicompressor 使用教程
Mar 31 Javascript
Jquery中getJSON在asp.net中的使用说明
Mar 10 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
Oct 12 Javascript
autoPlay 基于jquery的图片自动播放效果
Dec 07 Javascript
javascript Slip.js实现整屏滑动的手机网页
Nov 25 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
Feb 14 Javascript
Web打印解决方案之证件套打的实现思路
Aug 29 Javascript
jsp 网站引入外部css或者js失效问题解决
Oct 31 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
Mar 02 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
Sep 17 Javascript
CryptoJS中AES实现前后端通用加解密技术
Dec 18 Javascript
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
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
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
PDO::exec讲解
2019/01/28 PHP
jquery json 实例代码
2010/12/02 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python实现图片筛选程序
2018/10/24 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
Python目录和文件处理总结详解
2019/09/02 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
最新会计专业求职信范文
2014/01/28 职场文书
阳光体育活动总结
2014/04/30 职场文书
护理专业自荐书
2014/06/04 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
任命书标准格式
2015/03/02 职场文书
毕业生个人自荐书
2015/03/05 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
创业计划书之书店
2019/09/10 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技