首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iCheck 插件下 CheckBox 狀態判斷:用 .prop() 而非 .attr()

     編輯:程式設計綜合問答

現象

引入 Bootstrap + iCheck 後,原本用 $('#chk').attr('checked') 判斷勾選失效,總返回 undefined 或舊值。

原因

  • .attr() 讀取的是 **HTML 屬性**(初始寫在標籤上的 checked="checked"),不隨用戶交互更新。
  • .prop() 讀取的是 **DOM 屬性**(實際狀態 checked: true/false),實時反映勾選狀態。
  • iCheck 通過隱藏原 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'));
});

補充:原生 JS 等價

document.getElementById('chk').checked; // boolean
document.getElementById('chk').checked = true;

總結

凡涉及表單元素實時狀態(checked, selected, disabled, value 等),一律用 .prop() / .val();只在需要讀寫初始 HTML 屬性時用 .attr()。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved