引入 Bootstrap + iCheck 後,原本用 $('#chk').attr('checked') 判斷勾選失效,總返回 undefined 或舊值。
.attr() 讀取的是 **HTML 屬性**(初始寫在標籤上的 checked="checked"),不隨用戶交互更新。.prop() 讀取的是 **DOM 屬性**(實際狀態 checked: true/false),實時反映勾選狀態。input、模擬 div/ins 樣式,點擊時只同步修改底層 input 的 checked 屬性(DOM Prop),不動 HTML Attribute。// 判斷是否勾選
var isChecked = $('#chk').prop('checked'); // true / false
// 設置勾選
$('#chk').prop('checked', true).iCheck('update'); // 同步 UI
// 監聽變化
$('#chk').on('ifChanged', function(e) {
console.log('當前狀態:', $(this).prop('checked'));
});
document.getElementById('chk').checked; // boolean
document.getElementById('chk').checked = true;
凡涉及表單元素實時狀態(checked, selected, disabled, value 等),一律用 .prop() / .val();只在需要讀寫初始 HTML 屬性時用 .attr()。