最近朋友在做一个项目的时候,遇到动态加载微博内容,然后点击“展开评论”后获取该微博的所有评论。这里使用了动态加载的<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()函数,重写响应逻辑:

1
2
3
4
$(“.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事件的原因及解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

动态生成的DOM不会触发onclick事件的原因及解决方法的更多相关文章

  1. Iphone上对于动态生成的html元素绑定点击事件$(document).click()失效解决办法

    在Iphone上,新生成的DOM元素不支持$(document).click的绑定方法,该怎么办呢? 百度了N久都没找到解决办法,在快要走投无路之时,试了试Google,我去,还真找到了,歪国人就是牛 ...

  2. 动态生成的DOM做点击事件无效

    有时候我们的标签都是从后台获取的数据,然后利用JS添加到页面上,当我们写生成的标签的点击事件(click)时没有效果. 例如: <section> 测试动态生成的DOM点击事件 <b ...

  3. C# 动态生成的按钮及定义按钮的事件的代码

    内容闲暇时间,把内容过程中比较常用的内容备份一下,如下的内容内容是关于C# 动态生成的按钮及定义按钮的事件的内容,应该对码农们也有用途. HtmlGenericControl control = ne ...

  4. JQuery模拟点击页面上的所有a标签,触发onclick事件

    注意: 这种方法需要给所有的a标签加上id属性 页面加载完成模拟点击所有的a标签: <script> $(function () { // 模拟点击页面上的所有a标签,触发onclick事 ...

  5. javascript onclick事件可以调用两个方法吗?

    答案是:可以的,onclick事件可以调用多个方法,每个方法之间用分号(:)隔开即可. onclick后面其实是可以写任何代码的,但是一般不建议这么写!! 例:onclick="fun1() ...

  6. javascript中onclick事件能调用多个方法吗

    Q: javascript中onclick事件能调用多个方法吗? A: 可以的,方法如下onclick="aa();bb();cc();"每个方法用“;”分号隔开就行了

  7. JavaScript的 onclick 事件是如何调用jquery 方法的

    看见个不错的问答,关于JavaScript的 onclick 事件是如何调用jquery 方法的,特此标注,链接如下:http://segmentfault.com/q/101000000033350 ...

  8. 改进动态设置query cache导致额外锁开销的问题分析及解决方法-mysql 5.5 以上版本

    改进动态设置query cache导致额外锁开销的问题分析及解决方法 关键字:dynamic switch for query cache,  lock overhead for query cach ...

  9. onchange监听input值变化及input隐藏后change事件不触发的原因与解决方法(设置readonly后onchange不起作用的解决方案)

    转自:https://www.cnblogs.com/white0710/p/7338456.html 1. onchange事件监听input值变化的使用方法: <input id=" ...

随机推荐

  1. JSON数据乱码问题

    http://ifeve.com/json-code-problem/ ***************************** 背景 程序员一提到编码应该都不陌生,像gbk.utf-8.ascii ...

  2. 高速掌握Lua 5.3 —— 扩展你的程序 (1)

    Q:怎样在C中将Lua作为配置文件语言使用? A: "config.lua"文件里: -- window size width = 200 height = 300 "m ...

  3. Python+Django+SAE系列教程12-----配置MySQL数据库

    由于SAE上支持的是Mysql,首先我们要在本地配置一个Mysql的环境 ,我在网上找到MySQL-python-1.2.4b4.win32-py2.7.exe,并双击 安装 选择典型安装 安装结束后 ...

  4. 【动软.Net代码生成器】连接MySQL生成C#的POCO实体类(Model)

    首先是工具的下载地址: 动软.Net代码生成器 该工具官网自带完整教程: 文档:http://www.maticsoft.com/help/ 例子:http://www.maticsoft.com/h ...

  5. .net DLL程序集中打包另一个DLL

    项目中做了一个通用组件的类库,类库中引用了几个第三方组件(DLL),组件发布给同事使用时,需要同时将这几个第三方的DLL一并复制过去,然后添加相关组件的引用. 如何能够将这些第三方的DLL直接打包到我 ...

  6. linux中mysql表名默认区分大小写导致表找不到的问题

    天将window的项目迁移到linux上面,然后登录时一直报用户表找不到的错误信息. 检查发现数据库中的表名是m_user, 后来才想起来是大小写问题, 找到问题原因,解决方案如下: 修改/etc/m ...

  7. 双行表头DatagridView的简单实现

    DatagridView默认不支持多行表头的实现,一些第三方的控件,比如Spread就可以,因此要实现这个功能,只能自己想办法了.介绍两种思路:1,用重写DataGridView的Paint等方法,可 ...

  8. WPF路由事件三:自定义路由事件

    与依赖项属性类似,WPF也为路由事件提供了WPF事件系统这一组成.为一个类型添加一个路由事件的方式与为类型添加依赖项属性的方法类似,添加一个自定义路由事件的步骤: 一.声明路由事件变量并注册:定义只读 ...

  9. Hibernate- 开发环境准备

    数据库:两张表,两者通过publisher_id构成关联关系. Book(图书表) CREATE TABLE `t_book` ( `id` int(11) NOT NULL AUTO_INCREME ...

  10. unicode编码转汉字

    String hexB = Integer.toHexString(utfBytes[byteIndex]);   //转换为16进制整型字符串 if (hexB.length() <= 2)  ...