jQuery复选框价格计算修复:全选用固定价,未选则累加子项价格
修复复选框总价计算逻辑
核心思路很明确:先判断分类全选框是否被选中,选中就直接用它的固定价格;没选中时再累加选中子项的价格。以下是修复后的代码:
// 监听所有相关复选框的变化事件 $('.category-select-all, .category-item-checkbox').on('change', function() { let total = 0; const $selectAll = $('.category-select-all'); // 检查全选框是否选中 if ($selectAll.is(':checked')) { // 选中全选时,直接取全选框的价格 total = parseInt($selectAll.data('harga'), 10); } else { // 未选中全选时,累加所有选中子项的价格 $('.category-item-checkbox:checked').each(function() { total += parseInt($(this).data('harga'), 10); }); } // 更新页面上的总价显示(替换成你实际的总价元素选择器) $('.total-price').text(total); });
关键逻辑说明
- 优先判断全选框状态:只要全选框选中,就忽略所有子项的选中状态,直接使用全选框的
data-harga值 - 未选中全选时,只遍历已选中的子项进行价格累加,避免无效计算
- 用
parseInt把data-harga的字符串值转为数字,防止出现字符串拼接的错误(比如"100"+"200"变成"100200")
另外需要注意:
- 确保全选框和子项的选择器(
.category-select-all、.category-item-checkbox)和你实际DOM结构中的类名匹配 - 如果页面有多个分类组,要给每个组加独立的容器,避免不同组的复选框互相干扰
内容的提问来源于stack exchange,提问作者Ahmad Zakaria
相关产品推荐
相关产品推荐

