jquery 动态生成html后click事件不触发原因

作者: iam3y.com 分类: 前端 发布时间: 2011-12-02 08:55 ė 64条评论

最近在做一个项目的时候,遇到动态加载微博内容,然后点击“展开评论”后获取该微博的所有评论。这里使用了动态加载的<span mid=’123456789′ class=’get_comment’>点击加载评论</span>。

然后再写

$(“.get_comment).click(function(){

//响应事件逻辑

})

,发现click事件并不会触发,使用控制台侦听也木有错误。百思不得其解时,将焦点落在动态加载上。

于是,使用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 必需。规定当事件发生时运行的函数。

本文出自 IT P民,转载时请注明出处及相应链接。

本文永久链接: http://www.iam3y.com/?p=560

0

4条评论

  1. liang 2014 年 3 月 29 日 下午 1:41 回复

    学习了

  2. tang 2013 年 11 月 29 日 下午 3:57 回复

    正好用着,学习了

  3. Pingback: cnblogs: jquery 动态生成html后click事件不触发原因 – PHP高级工程师 | 易站|工作室

  4. 淘宝省钱 2012 年 4 月 21 日 下午 11:29 回复

    不懂啊。。有没那种在线生成的啊。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Ɣ回顶部