jquery通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素)
1
|
$(
"ul"
).append(
"<li class='name'>名称</li>"
);
|
【错误】然后通过下面的方式,这样是不能获取的 :
1
2
3
|
$(
".name"
).click(
function
(){
alert(
"获取到append后的节点"
);
})
|
【正确】正确的方法是:
1
2
3
|
$(
".name"
).live(
"click"
,
function
() {
alert(
"获取到了"
);
});
|
jquery 1.7+之后用on代替live,on()方法在被选元素及子元素上添加一个或多个事件处理程序
1
2
3
4
|
<
div
id
=
"one"
></
div
>
$('#one').append("<
p
id
=
'two'
>test1</
p
>");
append后结果:
$('#one').append("<
p
id
=
'two'
>test1</
p
>");
|
【错误】直接用下面的方式,不会弹出窗口的:
1
2
3
|
$(
"#two"
).on(
"click"
,
function
(data){
alert(data);
});
|
【正确】改成下面的方式(其中"#two"为筛选,可以换成".class"):
1
2
3
|
$(
"body"
).on(
"click"
,
"#two"
,
function
(data){
alert(data);
});
|
解除绑定:
$(
"body"
).off(
"click"
,
"#two"
);