Jq绑定都是绑定现有代码中的已存在元素,例如:
$("#allin_group").click(function(){
var isallin = $(this).attr("checked");
if(isallin){
$(".usergroup").attr("checked",true);
}else{
$(".usergroup").attr("checked",false);
}
});
平时这样使用是没有问题的,但是如果之后又用append或是html等方法生成了新元素,上面的jq是不会执行的,因为新生成的元素并不在之前被绑定的范围当中。
这时候,应该使用Jq中的live方法来解决:
$("#allin_position").live("click",function(){
var isallin = $(this).attr("checked");
if(isallin){
$(".position").attr("checked",true);
}else{
$(".position").attr("checked",false);
}
});
live方法适用于绑定新生成元素,主要是因为通过 live() 方法附加的事件适用于选择器匹配的所有——当前及未来的元素(比如由脚本创建的新元素)。
其实以前就有遇到过这一类的问题,但是因为当时没有重视,就利用各种方法取巧绕过了,今天是使用layer弹出新页面时候又遇到了,于是查阅资料解决。