1. 程式人生 > >jquery利用attr()方法改變checkbox控制元件狀態的問題

jquery利用attr()方法改變checkbox控制元件狀態的問題

使用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()方法。