当前位置: 首页 > Web前端 > HTML

jquery实现checkbox全选、反选和反选

时间:2023-04-02 21:55:20 HTML

最近在看廖雪峰的jquery教程。事件篇的练习比较全面。研究了半天,终于研究出来了。现分享出来,提供给小白学习。题目如下:首先要获取所有选择的checkbox和每一项的checkbox,然后通过逻辑代码实现题目需求。先提供一个版本的大体思路,代码注释已经详细:selectAllLabel.click(()=>{selectAllLabel.hide();deselectAllLabel.show();langs.prop('checked',true);});取消选择所有标签。click(()=>{//当用户去掉“unselectall”时,所有语言自动取消选择;langs.prop('checked',false);deselectAllLabel.hide();selectAllLabel.show();});langs.map(()=>{$(this).change(()=>{//首先获取选中复选框的数量varlen=form.find('[name=lang]:checked').length;console.log('len=',len);//当用户手动勾选所有语言时,“selectall”自动勾选,变为“unselectall”;if(len===langs.length){selectAllLabel.hide();deselectAllLabel.show();selectAll.prop('checked',true);}else{//当用户手动取消选中至少一种语言时,“uncheckall”自动取消选中,变为“selectall”.selectAll.prop('选中',false);selectAllLabel.show();取消选择AllLabel.hide();}});});invertSelect.click(()=>{langs.each(()=>{$(this).prop('checked',!$(this).prop('checked'));});});上面的代码可以满足题目的要求,但是代码量有点大,不精简的强迫症会死的。先来看看效果:下面是放大的时间。如果您了解了上述方法,请升级:函数updatelabel(){//当所选项目和langs项目的数量相等时,AllChecked是正确的,否则为falseletallchecked=langs.filter(':':checked').length===langs.length;//根据选项是否全部选中设置“全选”复选框的选中状态selectAll.prop('checked',allChecked);如果(allChecked){selectAllLabel.hide();取消选择AllLabel.show();}else{selectAllLabel.show();取消选择AllLabel.hide();}}selectAll.change(e=>{//根据selectAll是否选中设置各个langs的状态langs.prop('checked',selectAll.is(':checked'));updateLabel();});invertSelect.click(e=>{langs.click();});语言。变化(()=>updateLabel());});