在高版本的jquery引入prop方法后妇萄,什么時(shí)候該用prop溃列?什么時(shí)候用attr换途?它們兩個(gè)之間有什么區(qū)別?這些問題就出現(xiàn)了刽射。
對(duì)于HTML元素本身就帶有的
固有屬性军拟,
在處理時(shí),使用prop
方法誓禁。
對(duì)于HTML元素我們自己自定義的DOM屬性懈息,
在處理時(shí),使用attr
方法摹恰。
舉個(gè)例子:
<a target="_self" class="btn">百度</a>
這個(gè)例子里<a>元素的DOM屬性有“href辫继、target和class",這些屬性就是<a>元素本身就帶有的屬性俗慈,也是W3C標(biāo)準(zhǔn)里就包含有這幾個(gè)屬性姑宽,或者說在IDE里能夠智能提示出的屬性,這些就叫做固有屬性闺阱。處理這些屬性時(shí)炮车,建議使用prop
方法。
<a href="#" id="link1" action="delete">刪除</a>
這個(gè)例子里<a>元素的DOM屬性有“href酣溃、id和action”瘦穆,很明顯,前兩個(gè)是固有屬性赊豌,而后面一個(gè)“action”屬性是我們自己自定義上去的扛或,<a>元素本身是沒有這個(gè)屬性的。這種就是自定義的DOM屬性碘饼。處理這些屬性時(shí)熙兔,建議使用attr方法。使用prop方法取值和設(shè)置屬性值時(shí)派昧,都會(huì)返回undefined
值黔姜。
再舉一個(gè)例子:
<input id="chk1" type="checkbox" />是否可見
<input id="chk2" type="checkbox" checked="checked" />是否可見
像checkbox,radio和select這樣的元素蒂萎,選中屬性對(duì)應(yīng)“checked”和“selected”秆吵,這些也屬于固有屬性,因此需要使用prop方法去操作才能獲得正確的結(jié)果五慈。
$("#chk1").prop("checked") == false
$("#chk2").prop("checked") == true
如果上面使用attr方法纳寂,則會(huì)出現(xiàn):
$("#chk1").attr("checked") == undefined
$("#chk2").attr("checked") == "checked"