jquery-attr和prop

jquery升級到高版本之后新增了prop方法

平時我們?nèi)tml元素上的值都使用的是attr方法
取dom元素屬性直接獲取dom元素然后使用的屬性

1.attr

attr平時用的很多,對應(yīng)的是原生js的getAttribute和setAttribute;
按照我的理解,凡是你在html元素上能看到的屬性都可以使用attr去獲取和設(shè)置

<a id="test" name="test" href="#" data-action="action"  value="aaa" >
$("#a").attr("id");
$("#a").attr("name");
$("#a").attr("href");
$("#a").attr("data-action");
$("#a").attr("value");
2.prop

prop反映的是dom對象的屬性,所有attr屬性在dom屬性里都有對應(yīng)的數(shù)據(jù)
多數(shù)情況下prop和attr能返回同樣的值
有一個說法prop屬性是attr屬性通過某種邏輯計算后的結(jié)果
最明顯的例子就是checkbox

<input id="check1" type="checkbox" checked="checked">
<label for="check1">Check me</label>
$("input").attr('checked');  //checked
$("input").prop('checked');//true/false
3.同名屬性

html元素和dom元素上會出現(xiàn)同名參數(shù)的情況
例如:

id

該參數(shù)在html上和dom上是一致的

document.getElementById("bbb").id="aaa";
document.getElementById("bbb").setAttribute("id","aaa");

其最終結(jié)果是一變都變,但是這是特例

name
document.getElementById("bbb").name="1111111"
document.getElementById("bbb").setAttribute("name","2222222")
console.log(document.getElementById("bbb").name)//1111111

雖然同名,但是不是一個屬性,存儲的位置不同
attr相關(guān)連的會顯示在html上,直接屬性不會
大多數(shù)新增屬性都會是這個特性(原dom對象上沒有的屬性)

value

這個屬性也有點特殊

<input id="aaa" value="1">
console.log($("#aaa").val()) //1
console.log($("#aaa").prop("value")) //1
$("#aaa").val("2")
console.log($("#aaa").val()) //2
$("#aaa").attr("value",3)
console.log($("#aaa").val()) //2
console.log($("#aaa").attr("value")) //3
console.log($("#aaa").prop("value")) //2

html元素上的value屬性作為初始值,在沒有給dom對象的value屬性賦值的時候,通過val()方法和prop方法取值的時候返回的是都attr的屬性,一旦賦值就不會在取attr屬性
所以在存在value屬性的html標簽上面可以使用attr的value屬性賦初始值

disabled,readonly, checked
<input id="aaa" value="1">
$("#aaa").attr("disabled")//undefined
$("#aaa").attr("prop")//false

$("#aaa").attr("disabled","disabled");
$("#aaa").attr("disabled")//disabled
$("#aaa").attr("prop")//true

$("#aaa").prop("disabled",true);
$("#aaa").attr("disabled")//disabled
$("#aaa").attr("prop")//true

readonly, checked與disabled一樣,只不過各自的文本值為readonly與 checked

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容