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

jQuery 判斷 Checkbox 取消勾選的正確姿勢:傳遞 `this` 而非群組選取器

     編輯:程式設計綜合問答

錯誤程式碼分析

// JSP
onclick="selectProductCode('${productCode}')"

// JS
function selectProductCode(code) {
    alert($("input:checkbox[name='selectCode']:checked").is(':checked'));
}

問題:$("input:checkbox[name='selectCode']:checked") 選取的是所有已勾選的 checkbox 群組。只要群組中至少有一個被勾選,.is(':checked') 就回傳 true。取消第一個時,群組還有其他勾選項 → 仍為 true。

正確做法:傳遞當前元素 `this`

// JSP
onclick="selectProductCode('${productCode}', this)"

// JS
function selectProductCode(code, cb) {
    alert(cb.checked);  // 原生 DOM 屬性,直接反映當前狀態
    // 或 jQuery
    alert($(cb).is(':checked'));
    alert($(cb).prop('checked'));
}

進階:事件委派(動態新增 checkbox)


$(document).on('change', 'input:checkbox[name="selectCode"]', function() {
    console.log(this.checked, this.value);
});

關鍵 API 對比

寫法回傳適用場景
elem.checkedBoolean原生、最快、無依賴
$(elem).prop('checked')BooleanjQuery 1.6+ 推薦
$(elem).is(':checked')Boolean可用於任意選取器
$(elem).attr('checked')String/undefined不推薦,反映初始 HTML 屬性而非當前狀態
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved