先看截圖吧,javascript
js以下: html
$(function(){ //全選與否 function checkall(obj){ obj.click(function(){ if(obj.is(':checked')){ $(this).parent().next().find(":checkbox").prop("checked", true); } else{ $(this).parent().next().find(":checkbox").prop("checked", false); } }); //子項反向做用到全選狀態 var checkInSpan = obj.parent().next().find(":checkbox"); checkInSpan.click(function(){ var checkNum = obj.parent().next().find(":checkbox").length; var checkedNum = obj.parent().next().find("input:checked").length; if(checkedNum < checkNum){ obj.prop("checked", false); }; if(checkedNum == checkNum){ obj.prop("checked", true); } }) }; //函數調用-服務類型 var serviceTypeAll = $("#serviceTypeAll"); checkall(serviceTypeAll); //函數調用-門店 var storeAll = $("#storeAll"); checkall(storeAll); })
html以下:java
<div class="row"> <div class="col-md-2 otoc-textright otoc-p-t-15">服務類型:</div> <div class="col-md-10 otoc-p-t-10"> <div class="md-checkbox-inline"> <div class="md-checkbox"> <input type="checkbox" id="serviceTypeAll" class="md-check" > <label for="serviceTypeAll"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>所有 </label> </div> <span> <!--包含子check項的容器--> <div class="md-checkbox"> <input type="checkbox" id="service01" class="md-check" > <label for="service01"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>保養 </label> </div> <div class="md-checkbox"> <input type="checkbox" id="service02" class="md-check"> <label for="service02"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>洗車 </label> </div> <div class="md-checkbox"> <input type="checkbox" id="service03" class="md-check"> <label for="service03"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>維修 </label> </div> <div class="md-checkbox"> <input type="checkbox" id="service04" class="md-check"> <label for="service04"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>美容 </label> </div> <div class="md-checkbox"> <input type="checkbox" id="service05" class="md-check"> <label for="service05"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>事故 </label> </div> <div class="md-checkbox"> <input type="checkbox" id="service06" class="md-check"> <label for="service06"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>鈑噴 </label> </div> <div class="md-checkbox"> <input type="checkbox" id="service07" class="md-check"> <label for="service07"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>輪胎 </label> </div> <div class="md-checkbox"> <input type="checkbox" id="service08" class="md-check"> <label for="service08"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>其餘 </label> </div> </span> </div> </div> </div> <div class="row"> <div class="col-md-2 otoc-textright otoc-p-t-15">門店:</div> <div class="col-md-10 otoc-p-t-10"> <div class="md-checkbox-inline"> <div class="md-checkbox"> <input type="checkbox" id="storeAll" class="md-check" > <label for="storeAll"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>所有 </label> </div> <span> <div class="md-checkbox"> <input type="checkbox" id="store01" class="md-check" > <label for="store01"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>氧車樂金水路店 </label> </div> <div class="md-checkbox"> <input type="checkbox" id="store02" class="md-check" > <label for="store02"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>氧車樂車源店 </label> </div> <div class="md-checkbox"> <input type="checkbox" id="store03" class="md-check" > <label for="store03"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>氧車樂西店店 </label> </div> <div class="md-checkbox"> <input type="checkbox" id="store04" class="md-check" > <label for="store04"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>氧車樂梅林店 </label> </div> <div class="md-checkbox"> <input type="checkbox" id="store05" class="md-check" > <label for="store05"> <span class="inc"></span> <span class="check"></span> <span class="box"></span>氧車樂銳騎店 </label> </div> </span> </div> </div> </div>
此例以上的js代碼的弊端,雖然能夠實現全選/反選的功能,可是要嚴格遵照dom結構,這樣js才能順利找到對應的節點來操做。編程
//2個參數---不受頁面dom結構的變化影響 //參數說明: //obj : 爲全選check; //objChildren: 爲包含子checkbox的容器 function otoc_checkall(obj,objChildren){ obj.click(function(){ if(obj.is(':checked')){ objChildren.find(":checkbox").prop("checked", true); } else{ objChildren.find(":checkbox").prop("checked", false); } }); //子項反向做用到全選狀態 var objChildren_all = objChildren.find(":checkbox"); objChildren_all.click(function(){ var checkNum = objChildren.find(":checkbox").length; var checkedNum = objChildren.find("input:checked").length; if(checkedNum < checkNum){ obj.prop("checked", false); }; if(checkedNum == checkNum){ obj.prop("checked", true); } }) }; //引用 var serviceTypeAll = $("#serviceTypeAll"); var serviceTypeAll_children = $("#serviceTypeAll_children"); otoc_checkall(serviceTypeAll,serviceTypeAll_children);