动态生成的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类的静态属性和实例属性的理解
Oct 01 Javascript
js展开闭合效果演示代码
Jul 24 Javascript
js Math 对象的方法
Sep 01 Javascript
js加入收藏夹代码(兼容ie/ff/op)
May 16 Javascript
网页中JS函数自动执行常用三种方法
Mar 30 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
Oct 10 Javascript
纯js实现画一棵树的示例
Sep 05 Javascript
js图片查看器插件用法示例
Jun 22 Javascript
js面向对象之实现淘宝放大镜
Jan 15 Javascript
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
vue+elementUI实现简单日历功能
Sep 24 Javascript
Vue 组件注册全解析
Dec 17 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
PHP取进制余数函数代码
2012/01/19 PHP
PHP中去掉字符串首尾空格的方法
2012/05/19 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
childNodes.length与children.length的区别
2009/05/14 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
Python实现获取网站PR及百度权重
2015/01/21 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
Python实现多进程的四种方式
2019/02/22 Python
简单了解python反射机制的一些知识
2019/07/13 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
String这个类型的class为何定义成final?
2012/11/13 面试题
市场部管理制度
2014/02/02 职场文书
九年级政治教学反思
2014/02/06 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript
微信小程序实现录音Record功能
2021/05/09 Javascript