function onshowchange(show) {
var id = $(show).prop("id"); // 正常
var isshow = $(show).prop("showed"); // 自訂屬性
alert(typeof(isshow)); // 不彈出!
}
function onshowchange(show) {
alert("ok"); // 這行在前面就正常
var id = $(show).prop("id");
var isshow = $(show).prop("showed");
}
第二個版本能彈出 "ok",說明程式執行到此;第一個版本連 "ok" 都不彈,代表 prop() 拋出例外中斷執行。
prop() 於 jQuery 1.6 (2011/05) 新增prop(),呼叫會拋 TypeError: $(...).prop is not a functionattr() 取得 HTML 屬性值| 屬性類型 | prop() | attr() |
|---|---|---|
| 原生 DOM 屬性 (id, class, checked, disabled, value...) | ✅ 回傳當前狀態 (布林/字串/數值) | ⚠ 回傳初始 HTML 屬性值 |
| 自訂屬性 (showed, data-*) | ✅ 可讀寫 | ✅ 可讀寫 |
| 布林屬性 (checked, selected, disabled) | ✅ true/false | ⚠ "checked"/undefined |
<div showed="true">...</div> <!-- HTML5 建議 data-showed="true" -->
// 讀取
var shown = $(div).prop("showed"); // 回傳字串 "true"
var shownBool = $(div).is("[showed]"); // 回傳布林 true/false (推薦)
// 寫入
$(div).prop("showed", "false"); // 字串
$(div).attr("showed", "false"); // 同效
$(div).removeAttr("showed"); // 移除屬性
.prop( → .attr( (僅讀取 HTML 屬性時)jquery-migrate 套件暫時相容舊寫法