Skip to content

jQuery HTML 屬性:attr() 與 removeAttr()

jQuery HTML 屬性:attr 與 removeAttr

讀取、設定與移除 HTML 相關屬性,是 jQuery DOM 操作 中最基本的一組方法。

attr()

讀取

選取指定元素的屬性並取出值。

js
attr(attribute);

參數

功能說明型別範例備註
attribute屬性String'id''class'必填

範例

html
<div id="Dom">DOM</div>
js
const idStr = $('#Dom').attr('id');

// Dom
console.log(idStr);

讀不到會拿到 undefined

屬性不存在時回傳 undefined,選不到任何元素時也是。想觀察結果,可以搭配 輸出 檢查。

設定一個 HTML 屬性

選取指定元素並設定屬性、值。

js
attr(attribute, value);

參數

功能說明型別範例備註
attribute屬性String'class'必填
valueString'dom'必填

範例

html
<div id="Dom">DOM</div>
js
$('#Dom').attr('class', 'dom');

改樣式不要用 attr 換 class

直接用 attr('class', ...) 會覆蓋掉元素原本的所有類別。要新增或移除單一類別,請改用 addClass()removeClass()

設定多個 HTML 屬性

選取指定元素並設定多個屬性、值。

js
attr(attributes);

參數

功能說明型別範例備註
attributes多個屬性Object{ class: 'img-resp' }必填

範例

一次補上 <img> 的來源與替代文字。

html
<img id="Img">
js
$('#Img').attr({
  src: './images/jquery.png',
  alt: 'Hello jQuery',
  style: 'border: solid 1px yellowgreen',
});

removeAttr()

選取元素並移除指定的屬性。

js
removeAttr(attribute);

參數

功能說明型別範例備註
attribute屬性String'class'必填

範例

html
<div id="Dom" class="dom">DOM</div>
js
$('#Dom').removeAttr('class');

常見問題

attr 什麼時候是讀取、什麼時候是設定?

只給屬性名時是讀取,會回傳字串;再多給一個值就變成設定。想一次設定多個屬性,則改傳一個物件。

設定多個屬性時,物件要怎麼寫?

以屬性名為鍵、屬性值為值,例如:同時給 圖片srcalt。屬性名如果含有連字號,記得用引號包起來。

attr 讀不到值會回傳什麼?

該屬性不存在時回傳 undefined,選不到任何元素時也是。判斷屬性是否存在時要留意這一點。

attr 和 prop 差在哪?

attr() 讀的是 HTML 標籤上寫的屬性值,prop() 讀的是 DOM 物件 當下的屬性狀態。像 checkbox 的勾選狀態會變動,這種情況應該用 prop()

removeAttr 可以一次移除多個屬性嗎?

可以,把屬性名以空白隔開寫在同一個字串裡即可。要注意移除 class 屬性會把該元素所有類別一併清空。

延伸閱讀

參考資料:jQuery API:.attr()