jQuery中attr和prop的區(qū)別

在上周同事 做一個(gè)頁(yè)面,效果是這樣的


頁(yè)面

當(dāng)點(diǎn)擊左上方那個(gè)checkBox時(shí),要將下面的checkBox全部選中,我們的代碼是這樣的

  $("input[name='checkbox']").attr("checked",true);

然并卵,一點(diǎn)效果都沒有,后來?yè)Q成這樣,好了

    $(function(){
        $("#all").click(function(){
            if($("#all").prop("checked")){
                $("input[name='checkbox']").prop("checked",true);
            }else{
                $("input[name='checkbox']").prop("checked",false);
            }
        });
    });

于是上官方的文檔查了下attr和prop的區(qū)別,發(fā)現(xiàn)根本看不懂,如下圖


于是,我們做了個(gè)實(shí)驗(yàn)

        c1:<input id="c1" name="checkbox" type="checkbox" checked="checked" /></br>
        c2:<input id="c2" name="checkbox" type="checkbox" checked=true/></br>
        c3:<input id="c3" name="checkbox" type="checkbox" checked=""/></br>
        c4:<input id="c4" name="checkbox" type="checkbox" checked/></br>
        c5:<input id="c5" name="checkbox" type="checkbox" /></br>
        c6:<input id="c6" name="checkbox" type="checkbox" checked=false/></br>

            var a1=$("#c1").attr("checked");
            var a2=$("#c2").attr("checked");
            var a3=$("#c3").attr("checked");
            var a4=$("#c4").attr("checked");
            var a5=$("#c5").attr("checked");
            var a6=$("#c6").attr("checked");
            
            var p1=$("#c1").prop("checked");
            var p2=$("#c2").prop("checked");
            var p3=$("#c3").prop("checked");
            var p4=$("#c4").prop("checked");
            var p5=$("#c5").prop("checked");
            var p6=$("#c6").prop("checked");
            
            console.log("a1:"+a1);
            console.log("a2:"+a2);
            console.log("a3:"+a3);
            console.log("a4:"+a4);
            console.log("a5:"+a5);
            console.log("a6:"+a6);
            
            console.log("p1:"+p1);
            console.log("p2:"+p2);
            console.log("p3:"+p3);
            console.log("p4:"+p4);
            console.log("p5:"+p5);
            console.log("p6:"+p6);

結(jié)果是這樣的(chrome)

效果

發(fā)現(xiàn)attr的返回值要么是checked要么是undefined,prop的返回值只有true和false。
經(jīng)過在網(wǎng)上搜素和測(cè)試總結(jié)

prop()函數(shù)的結(jié)果:
1.如果有相應(yīng)的屬性,返回指定屬性值。
2.如果沒有相應(yīng)的屬性,返回值是空字符串。
attr()函數(shù)的結(jié)果:
1.如果有相應(yīng)的屬性,返回指定屬性值。
2.如果沒有相應(yīng)的屬性,返回值是undefined。

對(duì)于HTML元素本身就帶有的固有屬性,在處理時(shí),使用prop方法。
對(duì)于HTML元素我們自己自定義的DOM屬性,在處理時(shí),使用attr方法。
具有 true 和 false 兩個(gè)屬性的屬性,如 checked, selected 或者 disabled 使用prop()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容