1. 程式人生 > >attr和prop的區別-解決checkbox選中不起作用的問題

attr和prop的區別-解決checkbox選中不起作用的問題

        今天在寫checkbox的全選,半全選時遇到了一個問題,剛開始點選全選按鈕時,可以全選,再點選可以全部清除選中,再點選就不起作用了?

        我開啟審查元素髮現,第三次點選應該是全選的狀態,這時裡面的屬性確實都是“checked=checked”但是checkbox卻沒顯示選中,然後就查了一下;

我用的是attr(“checked”,true);後來把attr改成了prop就可以了;所以理解attr和prop很重要;

從 jQuery 1.6 開始新增了一個方法 prop(),但是一直都沒有使用過。

從中文意思看,兩者分別是獲取/設定 attributes 和 properties 的方法,那麼為什麼還要增加 prop() 方法呢?

Before jQuery 1.6, the .attr() method sometimes took property values into account when retrieving some attributes, which could cause inconsistent behavior.

因為在 jQuery 1.6 之前,使用 attr() 有時候會出現不一致的行為。

那麼,什麼時候使用attr(),什麼時候使用prop()?

To retrieve and change DOM properties such as the checked, selected, or
disabled state of form elements, use the .prop() method.

根據官方的建議:具有 true 和 false 兩個屬性的屬性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()

到此,將 attr('checked') 改成 prop('checked') 即可修復提的 issues 了。

部分內容轉載至:http://wenzhixin.net.cn/2013/05/24/jquery_attr_prop 文翼的部落格