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

87590090 2014-11-12

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

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

<inputtype="checkbox"id="123">

选中复选框:

$("#123").attr("checked","checked");//或者$("#123").attr("checked",true);

取消复选框:

$("#123").attr("checked",false);//或者$("#123").removeAttr("checked");

但是如果想要批量操作一些复选框,而且不知道这些复选框的ID,而且这些复选框每个外面都会嵌套不同层数的DIVLABEL等其他页面标签元素,

比如最外层元素是<divid="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){

//先进行全部取消操作

//varcid=$(this).attr("id");

//document.getElementById(cid).checked=false;

el.checked=false;//上面注释的两行意思等同于当前这行

//满足条件的话进行选中操作

if(a>b){

//varcid=$(this).attr("id");

//document.getElementById(cid).checked=true;

el.checked=true;

}

});

虽然还是用到了部分jquery的语法,但是选中操作用的是原生JS的写法

document.getElementById(cid).checked=true;

相关推荐

Web全栈笔记 / 0评论 2020-06-15