給tr添加點擊事件,使用find方法查找tr下的所有層級的元素,children只查找下一層級的元素,所以使用find。
find的返回值為jquery對象,在這個項目中不知道為什么使用jquery給checkbox添加checked屬性或去掉checked屬性不能使checkobx改變狀態,所以我就把jquery對象轉換為DOM對象,怎么轉呢?jquery對象[0]或者get(0)就轉換成DOM對象,然后直接.checked返回true或false就可以判斷checkbox是否選中了。然后判斷狀態,改變狀態。
$("tr").click(function(e){
var check = $(this).find("input[type='checkbox']");
if(check){
var flag = check[0].checked;
if(flag){
check[0].checked = false;
}else{
check[0].checked = true;
}
}
});
到這還沒有結束,當點擊checkbox的時候出現了問題。是因為點擊checkbox的時候同時也點擊了tr,所以checkbox的狀態只是閃一下,沒有改變。要解決這個問題使用下面代碼就可以實現。給checkbox添加阻止冒泡事件,三行代碼就搞定了。
$("input[type='checkbox']").click(function(e){
e.stopPropagation();
});
解決 jquery給checkbox添加checked屬性或去掉checked屬性不能使checkobx改變狀態 除了轉換成dom外還可以
$(".list-msg li").click(function(){
obj=$(this).find("input[type=checkbox]");
//alert(obj.is(":checked"))
if(obj.is(":checked")){
obj.prop("checked", false)
}else{
obj.prop("checked", true)
}
})
jquery 1.6以上版本 設置boolean值的屬性時要用prop。而不是attr
