input checkbox復選框全選與部分選中效果


input checkbox復選框全選與不全選方法封裝如下:
html代碼:
<table class="yt-table check-test-tab" style="width:840px;margin: 20px auto;">
  <thead class="yt-thead">
    <tr>
      <th>
        <lable class="check-label yt-checkbox parent-check">
          <input type="checkbox" class="check-all" name="test" />
        </lable>
      </th>
      <th>預算編號</th>
      <th>預算表名稱</th>
    </tr>
  </thead>
  <tbody class="yt-tbody">
    <tr>
      <td>
        <lable class="check-label yt-checkbox">
          <input type="checkbox" name="test" />
        </lable>
      </td>
      <td>T27</td>
      <td>預算總表</td>
    </tr>
    <tr>
      <td>
        <lable class="check-label yt-checkbox">
          <input type="checkbox" name="test" />
        </lable>
      </td>
      <td>T28</td>
      <td>人員支出</td>
    </tr>
    <tr>
      <td>
        <lable class="check-label yt-checkbox">
          <input type="checkbox" name="test" />
        </lable>
      </td>
      <td>T29</td>
      <td>住房改革支出1</td>
    </tr>
    <tr>
      <td>
        <lable class="check-label yt-checkbox">
          <input type="checkbox" name="test" />
        </lable>
      </td>
      <td>T30</td>
      <td>住房改革支出2</td>
    </tr>
    <tr>
      <td>
        <lable class="check-label yt-checkbox">
          <input type="checkbox" name="test" />
        </lable>
      </td>
      <td>T31</td>
      <td>公用支出</td>
    </tr>
  </tbody>
</table>
js代碼:
<script type="text/javascript">
(function($){
  $.fn.extend({
    /**
    * 設置多選
    * @param {Object} obj string類型參數
    */
    setCheckBoxState:function(obj){
      /**
      * 判斷狀態 check(選中),
      * uncheck(取消選中),
      * disabled(禁用),
      * undisabled(取消禁用),
      * half(半選)
      */
      if(obj == "check"){
        $(this).parent().addClass("check");
        $(this)[0].checked = true;
      }else{
        $(this).parent().removeClass("check");
      }
      /**
      * 取消選中
      */
      if(obj == "uncheck"){
        $(this).parent().removeClass("check");
        $(this)[0].checked = false;
        //清楚禁用樣式
        $(this).parent().removeClass("yt-check-disabled");
      }
      /**
      * 禁用
      */
      if(obj == "disabled"){
        $(this)[0].disabled=true;
        $(this)[0].checked = false;
        $(this).parent().addClass("yt-check-disabled");
      }
      /**
      * 取消禁用
      */
      if(obj == "undisabled"){
        $(this)[0].disabled=false;
        $(this).parent().removeClass("yt-check-disabled");
      }
      /**
      * 半選
      */
      if(obj == "half"){
        $(this).parent().addClass("yt-checkbox-half");
      }else{
        $(this).parent().removeClass("yt-checkbox-half");
      }
      /**
      *全選
      */
      if(obj == "checkAll"){
        //設置當前對象下面的復選框選中
        $(this).find(".yt-checkbox").addClass("check");
        $(this).find('input[type="checkbox"]').prop("checked",true);
      }
      /**
      *反選
      */
      if(obj == "unCheckAll"){
        //設置當前對象下面的復選框選中
        $(this).find(".yt-checkbox").removeClass("check");
        $(this).find('input[type="checkbox"]').prop("checked",false);
      }
    },
  })
})(jQuery)
</script>
<script type="text/javascript">
  var checkBox = {
    init:function(){
      checkBox.events();
    },
    events:function(){
      //全選
      $(".parent-check").change(function(){
      //判斷自己是否被選中
      if($(this).hasClass("check")){
        //設置反選
        $("table tbody").setCheckBoxState("unCheckAll");
      }else{
        //調用設置選中方法,全選
        $("table tbody").setCheckBoxState("checkAll");
      }
    });
    //表格中復選框操作
    $("table tbody .yt-checkbox").change(function(){
      //獲取區域復選框數量,用來比較
      var tableCheckLen = $("table tbody .yt-checkbox").length;
      if($(this).hasClass("check")){
        //取消全選
        $("input.check-all").prop("checked",false).setCheckBoxState("uncheck");
      }else{
        //設置當前復選框選中
        $(this).find("input").setCheckBoxState("check");
        //比對選中的復選框數量和區域內復選框數量
        if($("table tbody .yt-checkbox.check").length == tableCheckLen){
          //設置反選
          $("input.check-all").prop("checked",true).setCheckBoxState("check");
        }
      }
    });
  }
}
$(function(){
  checkBox.init();
})
</script>
效果如圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM