动态生成的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 相关文章推荐
2014 年最热门的21款JavaScript框架推荐
Dec 25 Javascript
JavaScript实现重置表单(reset)的方法
Apr 02 Javascript
JavaScript中的Math.E属性使用详解
Jun 12 Javascript
跟我学习javascript的undefined与null
Nov 17 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
Aug 09 Javascript
vue数据双向绑定原理解析(get &amp; set)
Mar 08 Javascript
jQuery实现页面倒计时并刷新效果
Mar 13 Javascript
Bootstrap DateTime Picker日历控件简单应用
Mar 25 Javascript
vue项目总结之文件夹结构配置详解
Dec 13 Javascript
jQuery替换节点元素的操作方法
Mar 18 jQuery
微信小程序onShareTimeline()实现分享朋友圈
Jan 07 Javascript
使用Typescript开发微信小程序的步骤详解
Jan 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
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
使用SAE部署Python运行环境的教程
2015/05/05 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
python实现文件的分割与合并
2019/08/29 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
美国电视购物:QVC
2017/02/06 全球购物
综合办公室主任职责
2013/12/16 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers