因为最近项目遇到这个问题,下面给大家带来一篇Jquery对新插入的节点 获取并对这个节点绑定事件失效的解决方法。我觉得挺不错的,大家也可以参考一下:
对于绑定事件来讲:
方法一:使用live
live()函数会给被选的元素绑定上一个或者多个事件处理程序,并且规定当这些事件发生时运行的函数。通过live()函数适用于匹配选择器的当前及未来的元素。比如,通过脚本动态创建的元素。
实现如下:
1
2
3
|
$(
'.liLabel'
).live(
'click'
,
function
(){
alert(
'OK'
);
});
|
方法二:使用on
可以通过on方法绑定事件,可以绑定到它的父级或者body中,实现如下:
1
2
3
4
5
6
7
|
$(
"#ulLabel"
).on(
'click'
,
'.liLabel'
,
function
(){
alert(
'OK'
)
});
或者:
$(
"body"
).on(
'click'
,
'.liLabel'
,
function
(){
alert(
'OK'
)
});
|
对于each()事件来讲:
方法一、刚创建完元素的时候,就立刻使用each方法
代码如下:
$('#btn').on("click", function(){
$('#div').append("<input type='text' />");
$("input").each(function(){
//TODO:
});
});
方法二、使用setTimeout方法在页面加载完成一段时间后再使用each方法
代码如下:
setTimeout(function(){
$("input").each(function(){
//TODO:
});
},1000);
是不是新插入的节点 对这个节点绑定事件失效问题解决了,希望这篇随笔能够帮助大家