移動端實現上拉加載更多(使用dropload.js vs js)


做下筆記,:移動端實現上拉加載更多,其實是數據的分段加載,在這里為了做測試我寫了幾個json文件作為分段數據:

方式一:使用dropload.js;

配置好相關參數及回調函數就可使用:代碼如下

var paging = 1;//頁碼數
 //初始化展示第一頁數據
  $.ajax({
        type: 'GET',
        url: "code"+paging+".json", 
        dataType: 'json',
        success: function(data){ 
            var result = ''; 
            for(var i = 0; i < data.length; i++){ 
                result += "<tr><td>"+data[i].qy+"</td><td>"+data[i].num+"</td><td>"+data[i].total+"</td></tr>"; 
            }  
            $('#code-table').append(result); 
        } 
    });
    // dropload函數接口設置
    $(".code-table").dropload({
        scrollArea : window, 
        domDown : {
            domClass   : 'dropload-down',
            // 滑動到底部顯示內容
            domRefresh : '<div class="dropload-refresh">↑上拉加載更多</div>',
            // 內容加載過程中顯示內容
            domLoad    : '<div class="dropload-load"><span class="loading"></span>加載中...</div>',
            // 沒有更多內容-顯示提示
            domNoData  : '<div class="dropload-noData">無更多數據</div>'
        }, 
        loadDownFn : function(me){
            paging++; // 每次請求,頁碼加1
            $(".code-table").css("height","auto");//容器初始化時我設置了高度,當加載更多時應該去掉,讓內容撐開
            $.ajax({
                type: 'GET',
                url: "code"+paging+".json",  //分段模擬數據,json文件
                dataType: 'json',
                success: function(data){
                    // data = JSON.parse(data); 
                    var result = '';
                    // 選擇需要顯示的數據 拼接 DOM
                    for(var i = 0; i < data.length; i++){ 
                        result += "<tr><td>"+data[i].qy+"</td><td>"+data[i].num+"</td><td>"+data[i].total+"</td></tr>"; 
                    }
                     if(data.length<9){
                            // 再往下已經沒有數據
                            // 鎖定
                            me.lock();
                            // 顯示無數據
                            me.noData(); 
                     }
                    // 為了測試,延遲1秒加載
                    setTimeout(function(){
                        // 加載 插入到原有 DOM 之后
                        $('#code-table').append(result);
                        // 每次數據加載完,必須重置 
                        me.resetload();
                    },1000);
                },
                // 加載出錯
                error: function(xhr, type){
                    alert('Ajax error!');
                    // 即使加載出錯,也得重置
                    me.resetload();
                }
            });
        },
        threshold : 50 
    });

dropload下拉刷新等更多詳情可參考:http://www.jianshu.com/p/65c718093d44;

方法二:利用移動端touch事件(貌似originalEvent事件需要jq2.0+版本)自定義方法(歡迎糾正);

方法代碼:

 1        var $Od=$(document);//觸摸對象
 2        var pIndex=1; //頁碼數
 3             var pSize=6;  //每頁數據個數
 4             var flag=1;   //為了防止重復滑動導致數據錯亂,我設置了一個標記,為1時上拉有效,為0無效
 5     function sliderMore(){
 6                 //觸摸事件開始 
 7                 $Od.on('touchstart.mo',function(ev){
 8                     //獲取手指觸摸列表,[0]代表第一個像素點
 9                     var touch = ev.originalEvent.changedTouches[0];
10                     var disy1 = touch.pageY; //記錄當前位置
11                     //開始滑動
12                     $Od.on('touchmove.mo',function(ev){
13                         
14                     })
15                     //抬起手指結束事件
16                     $Od.on('touchend.mo',function(ev){
17                          if(flag){  
19                          //再次獲取手指觸摸列表,[0]代表第一個像素點,並記錄位置
20                         var touch = ev.originalEvent.changedTouches[0];
21                         var disy2 = touch.pageY; 
22                         //判斷條件為上拉
23                         if((disy1-disy2)>20){  
24                             flag=0;//開始上拉設置重復上拉無效 pIndex++;//每次請求頁碼+1 
25                         $('#tips').html("加載中..."); //樣式,可自定義 
26                             //下面是本人寫的ajax請求數據,可自定義
27                                 var startVal = $("#dstart").val();
28                                 var endVal = $("#dend").val();
29                                 var data = {
30                                          "method":"get_activated_code_info", 
31                                          "start_time":startVal,
32                                          "end_time":endVal,
33                                          "page_index":pIndex,
34                                          "page_size":pSize
35                                      };
36                                     data = JSON.stringify(data);
37                                     ajaxCall(data,function(result){ 
38                                         //為了測試,延時展現數據效果
39                                         setTimeout(function(){  
40                                             //將請求結果展現出來
41                                                 for(var i in result.items){
42                                                       addItem(result.items[i].company_name,result.items[i].code_activated,result.items[i].activated_amount); 
43                                                   } 
44                                                 $('#tips').html("上拉加載更多");
45                                                 //判斷請求的結果有沒有數據,沒有就改變提示內容
46                                                 if(result.items.length==0){
47                                                      console.log(245);
48                                                      $('#tips').html("無更多數據");  
49                                                 }  
50                                         },500);
51                                         //要在數據展示出來之后,再將flag設為1,所以這里時間1000>500,這里可以只要一個定時器(就不改了),可以遍歷數據不需放在定時器里,遍歷用個變量保存,然后定時一次加入容器同時flag=1;
52                                         setTimeout(function(){  
53                                                 flag=1; 
54                                         },1000);
55                                     }); 
56                             }
57                         }  
58                     })
59                 }) 
60             }
61 sliderMore();

 


免責聲明!

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



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