我的需求是"点击某行,这个行前面的复选框选中"
$("tbody",$table).on("click","tr",function (event) {
$(this).toggleClass("active");
var item=_table.row($(this).closest("tr")).data();
if($(this).hasClass("active")){
alert(1);
$table.find("input[value='"+item.id+"']").attr("checked",true);
}else{
alert(2);
$table.find("input[value='"+item.id+"']").attr("checked",false);
}
});
这段代码只生效第一次,第二次就没有反映了;
加了alert();
alert语句都能正常弹出,但是复选框的状态就是没有改变.
你这个问题我有遇到过,你仔细看下jq文档attr()和prop()的区别,其实也就是属性和特性的区别。,而prop是用于设置属性用的,表单元素select或者checkbox radio、设置checked的值得时候建议使用prop设置,不然你会看到,虽然使用attr移出或者设置check属性,但是我们眼镜有时后似乎看不到变化,但是表单在提交数据的时候也会将数据提交到务器服(),如果是用prop设置的就不会出现这样的情况,关于属性和特性的区别,建议你看下
http://bbs.csdn.net/topics/392140605
这段代码,并没有什么问题,你的问题应该不会在这儿
jquery选择器没有时效性,如果只能执行一次的话,建议你在程序上打个断点,debug试一下
你是想按第一次某个为true,按第二次为false是吧?那你试试
if($(this).hasClass("active")){
$table.find("input[value='"+item.id+"']").attr("checked",true);
$(this).removeClass("active");
}else{
$table.find("input[value='"+item.id+"']").attr("checked",false);
$(this).addClass("active");
}
看看是不是可以实现?