中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jQuery實現checkbox即點即改批量刪除及中間遇到的坑

發布時間:2020-10-14 02:31:55 來源:腳本之家 閱讀:151 作者:宇的季節 欄目:web開發

 最近要用jQuery實現一個批量刪除操作,效果如下圖

jQuery實現checkbox即點即改批量刪除及中間遇到的坑

最終頁面page.html,此頁面使用了bootstrap和jQuery,如果沒有需要下載一下

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title>視頻管理</title>
  <link rel="stylesheet" type="text/css" href="css/init.css" rel="external nofollow" />
  <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" rel="external nofollow" />
  <script src="js/jquery-3.2.1.min.js"></script>
  <script src="js/bootstrap.min.js"></script>
  <style type="text/css">
   .head {
    background-color: #EFEFF4;
    font-size: 16px;
    color: black;
    padding: 20px;
    font-size: 20px;
    overflow: hidden;
    margin-bottom: 10px;
   }
   .table {
    margin-top: 30px;
    border: 1px solid #CCCCCC;
   }
   .name_info {
    color: red;
   }
   .message p {
    margin: 0px;
    padding: 0px;
   }
   .form_0 {
    background-color: #EEEEEE;
   }
  </style>
 </head>
 <body>
  <div class="container-fluid">
   <div id="row" class="head">
    <div class="col-sm-12 col-md-12 col-lg-12">
     <p>視頻管理</p>
    </div>
   </div>
   <div id="row" class="col-sm-12 col-md-12">
    <div class="col-xs-1">
     <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="batchDel" class="btn btn-danger btn">批量刪除 <span class="badge" id="badge_0">0</span></a>
    </div>
    <div class="col-xs-1">
     <p class="text-danger">刪除成功</p>
    </div>
    <div class="col-xs-1">
     <a href="speaker_add.html" rel="external nofollow" class="btn btn-primary btn">添加</a>
    </div>
    <div id="row" class="col-xs-6 col-md-offset-1">
     <form class="form-inline form_0" role="form">
      <div class="form-group col-xs-3 col-md-3">
       <input type="text" class="form-control" id="name" placeholder="課程名稱">
      </div>
      <div class="form-group col-xs-2 col-md-2">
       <select class="form-control btn-primary">
        <option>請選擇課程</option>
        <option>2</option>
       </select>
      </div>
      <div class="form-group col-xs-2 col-md-2">
       <select class="form-control btn-primary">
        <option>請選擇老師</option>
        <option>2</option>
       </select>
      </div>
      <div class="form-group col-xs-2 col-md-2">
       <button type="submit" class="btn btn-primary">查詢</button>
      </div>
     </form>
    </div>
   </div>
   <div class="row">
    <div class="col-md-10 col-lg-10">
     <table class="table table-striped">
      <thead>
       <tr>
        <th>選擇</th>
        <th>序號</th>
        <th>名稱</th>
        <th>介紹</th>
        <th>講師</th>
        <th>時長</th>
        <th>播放次數</th>
        <th>編輯</th>
        <th>刪除</th>
       </tr>
      </thead>
      <tbody>
       <tr>
        <td>
         <input class="check_0" value="0" type="checkbox">
        </td>
        <td class="show_id">1</td>
        <td id="show_name">環境搭建</td>
        <td>這視頻真tm牛逼</td>
        <td>老王</td>
        <td>666</td>
        <td>666</td>
        <td>
         <a href="video_update.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="edit_submit"><span class="glyphicon glyphicon-pencil"></span>編輯</a>
        </td>
        <td>
         <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="delete" data-toggle="modal" data-target="#myModal"><span class="glyphicon glyphicon-trash"></span>刪除</a>
        </td>
       </tr>
       <tr>
        <td>
         <input class="check_0" value="1" type="checkbox">
        </td>
        <td class="show_id">1</td>
        <td id="show_name">環境搭建</td>
        <td>這視頻真tm牛逼</td>
        <td>老王</td>
        <td>666</td>
        <td>666</td>
        <td>
         <a href="video_update.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="edit_submit"><span class="glyphicon glyphicon-pencil"></span>編輯</a>
        </td>
        <td>
         <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="delete" data-toggle="modal" data-target="#myModal"><span class="glyphicon glyphicon-trash"></span>刪除</a>
        </td>
       </tr>
       <tr>
        <td>
         <input class="check_0" value="2" type="checkbox">
        </td>
        <td class="show_id">1</td>
        <td id="show_name">環境搭建</td>
        <td>這視頻真tm牛逼</td>
        <td>老王</td>
        <td>666</td>
        <td>666</td>
        <td>
         <a href="video_update.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="edit_submit"><span class="glyphicon glyphicon-pencil"></span>編輯</a>
        </td>
        <td>
         <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="delete" data-toggle="modal" data-target="#myModal"><span class="glyphicon glyphicon-trash"></span>刪除</a>
        </td>
       </tr>
      </tbody>
     </table>
    </div>
   </div>
   <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
     <div class="modal-content">
      <div class="modal-header">
       <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
       <h5 class="modal-title" id="myModalLabel">溫馨提示</h5>
      </div>
      <div id="info" class="modal-body">你確定要刪除嗎?</div>
      <div class="modal-footer">
       <button type="button" class="btn btn-default" data-dismiss="modal">關閉</button>
       <button type="button" id="delete_submit" class="btn btn-primary">確定</button>
      </div>
     </div>
     <!-- /.modal-content -->
    </div>
    <!-- /.modal -->
   </div>
  </div>
  <form id="form" method="post">
   <input type="hidden" name="_method" id="_method" value="DELETE" />
   <input type="hidden" name="id" id="id" />
  </form>
 </body>
 <script type="text/javascript">
  $(document).ready(function() {
   $("#delete").click(function() {
    var click_name = $(this).parent().siblings("#show_name").html();
    var click_id = $(this).parent().siblings("#show_id").html();
    $("#info").html("你確定要刪除視頻:<a class='name_info'>" + click_name + "</a>嗎?");
    $("#id").val(click_id);
   })
   $("#delete_submit").click(function() {
    $("#_method").val("DELETE");
    $("#form").submit();
   })
   $("#edit_submit").click(function() {
    var click_id = $(this).parent().siblings("#show_id").html();
    $("#id").val(click_id);
    $("#form").attr("method", "get");
    $("#_method").val("get");
    $("#form").submit();
   })
   //獲取選中的個數
   $(".check_0").click(function() {
    $("#badge_0").html($("input[type=checkbox]:checked").length);
    //alert($("input[type = checkbox]: checked ").length); 
   })
   //批量刪除
   $("#batchDel").click(function() {
     var params = "";
     $("input[type = checkbox]:checked").each(function(index,element){
      //第一個id不需要加前綴
      if(index == 0) {
       params += "id=" +
        $(this).val();
      } else {
       params += "&id=" +
        $(this).val();
      }
     });
     alert("生成的拼接參數:" + params);
   })
  })
 </script>
</html>

上圖的操作主要需要兩個操作:

一、當checkBox點擊時進行選中計數(帶坑)。

二、當點擊批量刪除時,拼接選中單位的id,傳遞給個后臺。

初看一下,感覺這些很好實現,并且實現的方法很多。當初我也是這么認為的,結果搞了一個上午.......,接下來就看看jQuery的一些坑。

我開始想法是每次點擊checkBox時,對所有的checkBox進行each()遍歷,如果是勾選狀態就將Num++,最后將num的值賦給批量刪除的數字小標簽,順便把id也拼接了。

$(".check_0").click(function(){
     var num=0;
    var del_str="";
    $(".check_0").each(function(){
     alert($(this).val()+":"+$(this).attr("checked"));
     if($(this).attr("checked")=="checked"){
      num++;
      del_str+=$(this).parent().siblings("show_id").html()+"/";
     }
     alert(this.checked);
    })
   })

當這段代碼觸發時,卻發現一個詭異的現象:這段代碼會在勾選效果前先觸發。類似于beforeClick(),所以當代碼遍歷時,無法獲取當前的勾選狀態。

就這個問題,我在網上找了半天答案,硬是不知道如何解決,什么mouseup()都用了一下,都是beforeClick的效果。

最后我使用了另一種寫法。

//獲取選中的個數
   $(".check_0").click(function() {
    $("#badge_0").html($("input[type=checkbox]:checked").length);
    //alert($("input[type = checkbox]: checked ").length); 
   })
   //批量刪除
   $("#batchDel").click(function() {
     var params = "";
     $("input[type = checkbox]:checked").each(function(index,element){
      //第一個id不需要加前綴
      if(index == 0) {
       params += "id=" +
        $(this).val();
      } else {
       params += "&id=" +
        $(this).val();
      }
     });
     alert("生成的拼接參數:" + params);
   })

  成功運行出效果!

結論:

  在click()中使用input[type=[checkbox]:checked]選擇器獲得勾選元素時,得到的就是勾選后的結果afterclick()。

  而使用.each()遍歷時,獲取的是勾選前的效果beforeclick。

  為什么一個click函數里,能得出beforeclick和aferclick兩種效果?

  坑哭......

總結

以上所述是小編給大家介紹的jQuery實現checkbox即點即改批量計數及中間遇到的坑,希望對大家有所幫助,如果大家有任何疑問歡迎各我留言,小編會及時回復大家的!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云龙县| 巨鹿县| 金山区| 阿图什市| 内黄县| 咸阳市| 泽普县| 临夏县| 焉耆| 西安市| 炎陵县| 宜兴市| 通辽市| 佛坪县| 玉环县| 新营市| 尉氏县| 邢台县| 浦江县| 尼木县| 金平| 偃师市| 楚雄市| 台中市| 新密市| 监利县| 泌阳县| 郓城县| 福建省| 岱山县| 林口县| 南木林县| 庆阳市| 汉阴县| 册亨县| 五华县| 北票市| 洛浦县| 雷波县| 无锡市| 类乌齐县|