twbsPagination/ajax,以及后续绑定事件操作的代码位置关系,checkbox单全选联动

本文详细介绍了如何在网页应用中实现动态分页加载及批量删除功能,通过使用AJAX进行异步数据请求,结合jQuery插件实现平滑的分页效果,并确保在数据更新后正确调整分页。同时,探讨了批量选择与删除机制,确保操作的准确性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 //初始页面      
      var current_page=1;
      function loadPageData(page){
        // current_page=page;  
        //淡出一下
        $('tbody').fadeOut();            
        $.get('/admin/comments-data.php',{page:page},function(res){
          **if(page>res['total_page']){
            loadPageData(res['total_page']);
            return 
          }**
          //每次执行都要初始化整个分页,因为有可能ajax操作了数据,那么有些分页数据可能改变了
          //但是并没有刷新页面,所以这里要再次初始化,再次初始化后要设置起始页面为当前页面
          //而且在每次数据变化之后,上面都要判断当前页面是否超过了总页数,那么超过就调用重新获取数据后的总页数
          
          **$('.pagination').twbsPagination('destroy');
          $('.pagination').twbsPagination({ 
              first:'«',
              last:'»',
              prev:'<',
              next:'>',  
              startPage: page,        
              totalPages: res['total_page'],
              visiblePages: 5,            
              initiateStartPageClick:false,
              //下面这个事件初始化不执行,因为上面设置了false
              onPageClick: function (evt, page) {                      
                loadPageData(page);                       
              }           
          });**                     
          $('tbody').html($('#template').render({comments:res['comments']})); 
          //淡入
          $('tbody').fadeIn();
          //给current_page重新赋值,等待删除或其他事件删除后再次回到原页面
          current_page=page;    

           //操作,删除数据      
          //防止由于ajax多次执行,元素多次注册绑定事件,所以每一次就取消,只绑定一次
          if($._data($('tbody')[0], "events")){
            $('tbody').off();
          }
          $('tbody').on('click','.del',function(){ 
            console.log(count++);
            var id=$(this).data('id');  
            var warning=$('.info-alert');       
           $.get('/admin/comments-delete.php',{id:id},function(res){
              loadPageData(current_page); 
              warning.html(res).css('display','block');                    
           })     
          })           

          var checkList=$('.checkList');
          var checkAll=$('#checkAll');
          var delAll=$('#delAll');                
          var tbody=$('tbody');   
          var data_need='';  
          var idArr=[]; 
          var count=0; 
          var listLength=checkList.length;                
          checkAll.on('change',function(){            
            //全选checkbox与各checkbox同步
            var status=$(this).prop('checked');               
              checkList.prop('checked',status);
              
            
            if(status){
              //这里数组要清空,防止下方单选后这里又添加重数据
              idArr=[];
              checkList.each(function(){
                var id=$(this).data('id'); 
                idArr.push(id);            
              })                                        
            }else{
              idArr=[];
            }
            data_need=idArr.join(',');
          });
                            
          checkList.on('change',function(){                  
            var status=$(this).prop('checked'); 
            var id=$(this).data('id');
            // console.log(length);                        
            if(status){            
              idArr.push(id);                        
            }else{
              //点的是谁就在数组中查找后删除
              idArr.splice(idArr.indexOf(id),1);
            }
            //点击单个checkbox与全选checkbox的联动性               
            var count=0;                  
            checkList.each(function(){                    
              var status=$(this).prop('checked');
              status==false?count--:count++; 
              count==listLength?checkAll.prop('checked',true):checkAll.prop('checked',false);
            })
            data_need=idArr.join(',');                                                                  
          });         
          //这里当客户连续点击分页会有一个大bug,那就是不断出发分页的ajax之后(正常),给下面将要做的删除事件元素绑定了N+1次(点了N次)事件,这里必须解绑后重新绑定              

          if($._data(delAll[0], "events")){
            delAll.off();
          }

          delAll.on('click',function(){                      
             //数据不为空才删除
            if(data_need!=false){              
              $.get('/admin/comments-delete.php',{id:data_need},function(res){                         
                loadPageData(current_page);                          
                $('.info-alert').html(res).css('display','block');
              })
            }
            //这里如果点击全部删除按钮后,就把全选checkbox按钮的状态设置不勾选状态
            if(checkAll.prop('checked')){                        
              checkAll.prop('checked',false);
            }
          })
        });       
      }

      loadPageData(current_page);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值