今天在用jQuery設(shè)置表單radio的選中時(shí)遇到了radio 設(shè)置checked但按鈕還是沒(méi)選中的情況:
<code>$("#radio1").attr("checked","true");
$("#radio2").attr("checked","true");
</code>
第一次按radio切換沒(méi)問(wèn)題菌湃,但是當(dāng)我第二次切換radio就出現(xiàn)兩個(gè)radio都沒(méi)選中的樣子芍瑞。(單選框只能選一個(gè)),打開(kāi)開(kāi)發(fā)工具會(huì)發(fā)現(xiàn)兩個(gè)radio都帶有checked屬性了岛啸。
遇到這種問(wèn)題的原因在于attr()方法使用不當(dāng)汇歹。
- attr方法主要處理自定義的DOM屬性。
- prop方法主要處理本身就帶有的固有屬性。
例如這里的checked是radio的自帶的屬性讨惩,所以這里應(yīng)該使用prop()。
W3C標(biāo)準(zhǔn)里說(shuō)明的屬性寒屯,或者說(shuō)在IDE里能夠智能提示出的屬性荐捻,這些都是固有屬性黍少。
而我們?yōu)閔tml元素自定義(本身沒(méi)有的)的屬性則用attr()。
如果使用prop方法處理固定屬性的取值和設(shè)置屬性值時(shí)处面,都會(huì)返回undefined值厂置。