如何通过jQuery点击按钮批量勾选/取消单选按钮?代码仅生效一次求排查
问题原因及解决方案
问题根源
你的代码仅能生效一次的核心问题是误用了attr()方法操作单选框的checked状态。attr()用于操作HTML原生属性,而单选框的选中状态属于DOM元素的动态状态属性,第一次设置后,HTML属性不会同步DOM的实时状态,后续调用attr()就无法修改实际选中状态了。
修复后的代码
将所有attr('checked', ...)替换为prop('checked', ...),且无需手动遍历元素(jQuery支持对选中的元素集合批量操作):
$(document).on('click', '#btn_all_absent', function(e){ $("input:radio[class^=present]").prop('checked', false); $("input:radio[class^=absent]").prop('checked', true); }); $(document).on('click', '#btn_all_present', function(e){ $("input:radio[class^=absent]").prop('checked', false); $("input:radio[class^=present]").prop('checked', true); });
补充说明
prop()专门用于处理DOM元素的动态状态(如checked、disabled、selected等),能正确同步元素的实时状态。- 直接通过选择器获取元素集合后调用
prop(),代码更简洁高效,无需额外遍历逻辑。
内容的提问来源于stack exchange,提问作者Khushal
相关产品推荐
相关产品推荐

