一:相同:都用于設(shè)置或獲取指定的屬性
區(qū)別:
一:操作對象不同
1:attrbiute操作htnl文檔節(jié)點(diǎn)的屬性,prop操作js對象的屬性
? ? ? 例如:<div id="aa" class="bb"></div> 這里的id class就是該元素文檔節(jié)點(diǎn)的attribute
?obj={name:"httr",age:18,url:"http://www.365mini.com/"};這里的name age url就是對象的prop
2:attr()相當(dāng)于DOM中g(shù)etAttribute()和setAttribute()兩個方法
? ? ? ?prop()相當(dāng)于js原生對象中的獲取和設(shè)置屬性的方法
? ? ? 例如 ? element.setAttribute("id", 145);相當(dāng)于 ? ? ? ? ? ? ? ? ? ?$element.attr("id","145")
? ? ? ? ? ?element["name"] = "name值";相當(dāng)于$element.prop("name","name值")
3:prop某些屬性的更改也會影響到元素節(jié)點(diǎn)上對應(yīng)的屬性
? ? 例如:<div id="htt"><div>
? ?var ele=document.getelementById("htt")
? ? $(ele).attr("id") ? ?此時結(jié)果為htt
? ?$(ele).prop("id","lzx") ?使用prop方法修改屬性
? console.log($(ele).attr("id")) ? ?此時元素的屬性為lzx
4:屬性值類型不同
? ? attr()設(shè)置的屬性值只能是字符串類型
? ? prop因?yàn)槭菍s對象進(jìn)行操作 所以屬性值為任意類型
5:新改變
? ? ? 對于checked ? selected ? disabled ?這些屬性的狀態(tài)用prop()獲取或者設(shè)置(值為true 或false )
? ? ?如果在之前版本中用attr()獲取或設(shè)置的話 他返回的是checked ? selected ? disabled ?且如果沒有該屬性返回undefined
能夠使用prop()的操作都使用prop()