jquery 动态生成html后click事件不触发原因
2012-11-22 10:04
351 查看
最近在做一个项目的时候,遇到动态加载菜单内容,然后点击“菜单”执行对应的click方法无响应。这里使用了动态加载的<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() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素)。
转自:http://www.iam3y.com/html/560.html
然后再写
$(“.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 | 必需。规定当事件发生时运行的函数。 |
相关文章推荐
- jquery 动态生成html后click事件不触发原因
- jquery 动态生成html后click事件不触发原因
- jquery 动态获取生成的html
- jquery中对动态生成的标签不会响应click事件
- js 动态生成html 触发事件传参字符转义的实例
- jquery为动态生成的元素生成click事件
- jquery中对动态生成的标签不会响应click事件
- jquery html动态生成select标签出问题的解决方法
- 动态生成的DOM不会触发onclick事件的原因及解决方法
- jquery中对动态生成的标签不会响应click事件
- jquery事件对Html网页动态生成的元素失效
- js 动态生成html 触发事件传参字符转义
- jquery中对动态生成的标签不会响应click事件
- 动态生成的html 点击事件失效原因
- jquery html动态生成select标签出问题的解决方法
- 使用JQuery动态生成Html控件
- JQuery绑定动态生成的HTML问题
- jquery中对动态生成的标签不会响应click事件
- jquery获取动态生成的元素【live(), on()】div text html append attr
- jquery动态生成的元素自动执行一次click事件