在jQuery中,attribute和property卻是兩個(gè)不同的概念肚逸。attribute表示HTML文檔節(jié)點(diǎn)的屬性爷辙,property表示JS對(duì)象的屬性。
在jQuery中朦促,prop()
函數(shù)的設(shè)計(jì)目標(biāo)是用于設(shè)置或獲取指定DOM元素(指的是JS對(duì)象膝晾,Element類型)上的屬性(property);attr()
函數(shù)的設(shè)計(jì)目標(biāo)是用于設(shè)置或獲取指定DOM元素所對(duì)應(yīng)的文檔節(jié)點(diǎn)上的屬性(attribute)务冕。
2血当、應(yīng)用版本不同
attr()
是jQuery 1.0版本就有的函數(shù),prop()
是jQuery 1.6版本新增的函數(shù)禀忆。毫無(wú)疑問(wèn)臊旭,在1.6之前,你只能使用attr()
函數(shù)油湖;1.6及以后版本巍扛,你可以根據(jù)實(shí)際需要選擇對(duì)應(yīng)的函數(shù)。
3乏德、用于設(shè)置的屬性值類型不同
由于attr()
函數(shù)操作的是文檔節(jié)點(diǎn)的屬性撤奸,因此設(shè)置的屬性值只能是字符串類型,如果不是字符串類型喊括,也會(huì)調(diào)用其toString()方法胧瓜,將其轉(zhuǎn)為字符串類型。
prop()
函數(shù)操作的是JS對(duì)象的屬性郑什,因此設(shè)置的屬性值可以為包括數(shù)組和對(duì)象在內(nèi)的任意類型府喳。
4、其他細(xì)節(jié)問(wèn)題
在jQuery 1.6之前蘑拯,只有attr()
函數(shù)可用钝满,該函數(shù)不僅承擔(dān)了attribute的設(shè)置和獲取工作兜粘,還同時(shí)承擔(dān)了property的設(shè)置和獲取工作。例如:在jQuery 1.6之前弯蚜,attr()
也可以設(shè)置或獲取tagName孔轴、className、nodeName碎捺、nodeType等DOM元素的property路鹰。
直到j(luò)Query 1.6新增prop()
函數(shù),并用來(lái)承擔(dān)property的設(shè)置或獲取工作之后收厨,attr()
才只用來(lái)負(fù)責(zé)attribute的設(shè)置和獲取工作晋柱。
此外,對(duì)于表單元素的<q style="margin: 0px; padding: 0px;">checked</q>诵叁、<q style="margin: 0px; padding: 0px;">selected</q>雁竞、<q style="margin: 0px; padding: 0px;">disabled</q>等屬性,在jQuery 1.6之前拧额,attr()
獲取這些屬性的返回值為Boolean類型:如果被選中(或禁用)就返回true
浓领,否則返回false
。
但是從1.6開(kāi)始势腮,使用attr()
獲取這些屬性的返回值為String類型联贩,如果被選中(或禁用)就返回<q style="margin: 0px; padding: 0px;">checked</q>、<q style="margin: 0px; padding: 0px;">selected</q>或<q style="margin: 0px; padding: 0px;">disabled</q>捎拯,否則(即元素節(jié)點(diǎn)沒(méi)有該屬性)返回undefined
泪幌。并且,在某些版本中署照,這些屬性值表示文檔加載時(shí)的初始狀態(tài)值祸泪,即使之后更改了這些元素的選中(或禁用)狀態(tài),對(duì)應(yīng)的屬性值也不會(huì)發(fā)生改變建芙。
因?yàn)閖Query認(rèn)為:attribute的<q style="margin: 0px; padding: 0px;">checked</q>没隘、<q style="margin: 0px; padding: 0px;">selected</q>、<q style="margin: 0px; padding: 0px;">disabled</q>就是表示該屬性初始狀態(tài)的值禁荸,property的checked
右蒲、selected
、disabled
才表示該屬性實(shí)時(shí)狀態(tài)的值(值為true
或false
)赶熟。
因此瑰妄,在jQuery 1.6及以后版本中,請(qǐng)使用prop()
函數(shù)來(lái)設(shè)置或獲取checked
映砖、selected
间坐、disabled
等屬性。對(duì)于其它能夠用prop()
實(shí)現(xiàn)的操作,也盡量使用prop()
函數(shù)竹宋。