jquery利用attr()方法改變checkbox控制元件狀態的問題
阿新 • • 發佈:2018-12-22
使用jquery進行購物車裡的商品全選和全不選操作時,需要改變所有checkbox的狀態,原來的寫法是:
$(".selectall").on("click",function(){
if($(this).html()=="x"){
$("[name = chkItem]:checkbox").attr("checked", true);
$(this).html('O');
}else if($(this).html()=="O"){
$("[name = chkItem]:checkbox" ).attr("checked", false);
$(this).html('x');
}
});
然後發現該段程式碼執行時全選和全不選的操作都只能執行一次,再之後就不執行了。
將其中的attr()方法替換為prop()方法,搞定。
原來,在jquery裡,有兩種操作元素屬性的方法,一種是attr(),另一種是prop().
attr()是用來改變元素的attributes屬性的,而prop()方法是用來改變元素properties屬性的,那麼這兩者有何區別呢。
在預設情況下,attributes和properties是一樣的,都是用來儲存元素的屬性值的。
但是,當涉及到boolean值時,比如checkbox這樣的,有true和false這樣的布林值的元素屬性,attributes在頁面載入的時候就被設定,並且一直保持初始值,而properties則儲存著元素屬性的當前值。
也就是說:boolean properties保持最新。但相應的boolean attributes是不一樣的,正如上面所述,它們僅被瀏覽器用來儲存初始值
所以,涉及到boolean properties要在頁面載入後隨時更新的話,那還是要使用prop()方法。