num(){// 设置一个变量n来叠加没有选中的的数量let n =0// 对每条信息的每个选中框进行遍历,当选中框没有选中就+1for(let i =0; i <$(".labList input").length; i++){if($(".labList input").eq(i)[0].checked ==false){
n +=1}}// 将最终没有选中的数量拼接到标签内容中$(".set .items").text(n +"items left")}
total(){// 获取每个选中框节点let input = document.querySelectorAll(".labList label input")// 使用that接收this指向let that =this// 点击总选中框触发事件$(".total").on("click",function(){// 如果总的选中框被选中if(this.checked ==true){// 每个选中框也被选中for(let i =0; i < input.length; i++){
input[i].checked =true// 会改变选中的信息的样式,改变的是传入的参数是触发的选中框this和改变选中框的父级标签的内容样式
that.common1(this,$(input[i]).parent())}}else{// 如果总的选中框没有被选中// 每个选中框也没选中for(let i =0; i < input.length; i++){
input[i].checked =false// 会改变选中的信息的样式,改变的是传入的参数是触发的选中框this和改变选中框的父级标签的内容样式
that.common1(this,$(input[i]).parent())}}// 会改变没有选中的数量,所以每触发一次都需要重新计算数量
that.num()
that.all()
that.active()
that.computed()})}
八、点击 x 删除数据
over(){// 使用that接收this指向let that =this// 当鼠标悬浮到列表的具体数据中时$("label").on("mouseover",function(){// x 出现$(this).find("span").css("display","inline-block")// 当鼠标悬浮到列表的具体数据中时$("label").on("mouseout",function(){// x 隐藏$(this).find("span").css("display","none")})// 点击 x 时$(".labList label span").on("click",function(){// 删除这数据this.parentNode.remove()// 会改变总选中框的选中状态
that.common2()// 会改变总选中的隐藏与出现状态
that.hide()})})}
九、对all、active、computed三者选中时的样式修改
actived(){// 对all、active、computed三者选中时的样式修改for(let i =1; i <$(".set span").length -1; i++){$(".set span").eq(i).on("click",()=>{for(let j =1; j <$(".set span").length -1; j++){$(".set")[0].children[j].id =""}$(".set")[0].children[i].id ="actived"// 点击一次都会触发相应的事件this.active()this.all()this.computed()})}}