jquery批量操作checkbox不生效等问题

本文探讨了在复杂的页面结构中使用jQuery批量操作Checkbox时遇到的问题,并提供了解决方案。文章详细介绍了如何通过原生JS确保批量选中部分Checkbox的操作生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jquery批量操作checkbox不生效等问题

平常页面元素简单的时候操作很简单,也不会遇到特殊问题,但是当页面结构复杂的时候,特别是与其他框架混合的时候就会出现意外情况,

<input type="checkbox" id="123">
选中复选框:

$("#123").attr("checked","checked");//或者$("#123").attr("checked",true);
取消复选框:


$("#123").attr("checked",false);//或者$("#123").removeAttr("checked");
但是如果想要批量操作一些复选框,而且不知道这些复选框的ID,而且这些复选框每个外面都会嵌套不同层数的DIV LABEL 等其他页面标签元素,

比如最外层元素是<div id="aa">......

我们通常的写法是

$('#aa').find("input").each(function(){
$(this).attr("checked","checked");//或者$(this).attr("checked",true);
});
上面的写法是没问题的,但是有时候需要在你批量选中一部分复选框之前要先全部取消选中, 这个时候会这样写

$('#aa').find("input").each(function(){
$(this).attr("checked",false);//removeAttr
if(a>b){
$(this).attr("checked","checked");//或者$(this).attr("checked",true);
}
});
但是我这样写出现的问题,不管怎么试都是取消选中生效了,但是后面的批量选中一部分确没生效,就是if(a>b)里面的代码没生效,但是调试时候发现页面元素是有(checked="checked")的,但是页面上就是没有打钩,最后选择用原生JS来操作


$('#aa').find("input").each(function(i, el){
//先进行全部取消操作
//var cid = $(this).attr("id");
//document.getElementById(cid).checked = false;
el.checked = false;//上面注释的两行意思等同于当前这行
//满足条件的话进行选中操作
if(a>b){
//var cid = $(this).attr("id");
//document.getElementById(cid).checked = true;
el.checked = true;
}
});
虽然还是用到了部分jquery的语法,但是选中操作用的是原生JS的写法


document.getElementById(cid).checked = true;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值