jQuery如何提取选中元素中完整的checkboxgroup类名并排除额外类
方案1:优化存储方式(更推荐,后续维护成本更低)
你可以把分组标识从class迁移到自定义data-*属性,完全避免和其他业务类名冲突:
首先修改PHP生成的HTML结构,给每个复选框加data-checkbox-group属性:
<input name="contactresolveid2048" id="contactresolveid2048" type="checkbox" class="checkboxgroup0" data-checkbox-group="0"/>
然后JS逻辑可以简化为:
$('[data-checkbox-group]').click(function() { const groupId = $(this).data('checkbox-group'); const $sameGroup = $(`input[data-checkbox-group="${groupId}"]`); $sameGroup.filter(':checked').not(this).prop('checked', false); });
这种方式完全不受jQuery validate追加的valid/error类影响,逻辑更稳定。
方案2:基于原有class逻辑修正,正则提取目标类名
如果你不想改现有HTML生成逻辑,可以从元素的类名列表里用正则匹配出checkboxgroup开头的类:
// 注意把属性选择器从^=换成*=,避免其他类排在checkboxgroup前面时匹配失效 $('[class*="checkboxgroup"]').click(function() { // 遍历所有类名,匹配出checkboxgroup加数字的目标类 const targetClass = [...this.classList].find(cls => /^checkboxgroup\d+$/.test(cls)); const $checkboxgroup = $(`input.${targetClass}`); $checkboxgroup.filter(':checked').not(this).prop('checked', false); });
内容的提问来源于stack exchange,提问作者user3625269
相关产品推荐
相关产品推荐

