ajax - jquery 点击上一页、下一页、末页如何跳转

查看:243
本文介绍了ajax - jquery 点击上一页、下一页、末页如何跳转的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

写了一个新闻页面,每个页面从接口获取9条数据展示,页数是动态生成的,现在只做了点击页数获取相应页数据渲染到页面,上一页、下一页、末页不太清楚怎么做,我的疑问在于,如果点击上一页或下一页,如何知道当前页面的索引呢?请有经验的同学指教
html:

<!-- 主体内容 -->
<div class="news-content">
<div class="news-content-title">
    <div class="line horizon"></div>
    <div class="title-name horizon">新闻资讯</div>
    <div class="line horizon"></div>
</div>
<div class="news-wrapper">
   
</div>

<!-- 页数 -->

<ul id="page-wrapper">
 
</ul>


js:

 $(document).ready(function(){
 // 加载首页新闻
 getSubnews();
 // 加载某页新闻
 $("#page-wrapper").delegate(".pager", "click", function(){
    var no = $(this).index()-1;
    var pagenum = (no - 1)*9;
    // alert(pagenum);
    goPage(pagenum);

 })
 // !!!这里写的有问题,要写加载下一页的代码的
var currentPage = 1;
$("li .page-next").click(function(){
alert();
    currentPage++;
  goPage(currentPage);
 })

 // 定义获取首页新闻函数(跳转到该二级页面时或点击首页时加载)
 function getSubnews(){

    $.ajax({
        url:"http://123.56.196.192:2000/syxa/news-consult/2/0/9",
        type:"GET",
        // data: ,
        error:function(){
            // console.log(error);
        },
        success:function(data){
            var html="";
            // count为总页数
            // alert(data.count);
            //产生的页数
            var pageno = Math.ceil(data.count/9);
            // alert(pageno);
            var html = "";
            for(var i=1; i<= pageno; i++){
                html += "<li class=\"pager\">" + i +        "</li>";                    
                   // $(html).insertBefore(".page-next");
            }

              html = "<li class=\"page-first\">"+"首页"+"</li>"
                 + "<li class=\"page-prev\">"+"上一页"+"</li>"
                 +html
                 +"<li class=\"page-next\">"+"下一页"+"</li>"
                 +"<li class=\"page-last\">"+"末页"+"</li>";
            // $(html).insertBefore(".page-next");
            $("#page-wrapper").html(html);
            // 加载首页新闻9条
            // alert(data.data[0].title);
            var htmlString="";
            $.each(data.data,function(i,item){

                // alert(i);
                htmlString += " <div class=\"news-content-item\">"
                             +"<div class=\"news-content-item-title\">"
                             +"<span class=\"item-title\">"+data.data[i].title+"</span>"
                             +"<span class=\"item-date\">"+data.data[i].create_time+"</span>"
                +"<span class=\"item-location\"><i class=\"fa fa-map-marker\" ></i>"+"北京"+"</span></div>"    
    
                +"<div class=\"news-content-item-text\">"
                +"<a href=\" \">"+"<img class=\"news-img\" src="+data.data[i].top_img+"></a>"
                +"<a href=\" \"><div class=\"news-text\">" +data.data[i].subtitle+"</div></a></div>"
                +"<a href=\" \" class=\"news-more\">"+"了解更多"+"</a></div> ";

                // $(htmlString).insertAfter(".news-content-title");
                // console.info(htmlString);
                                   
            })
            $(".news-wrapper").html(htmlString);
        }

    })

  }

 // 定义点击页数跳转
 function goPage(page){
    // page=(page-1);
    $.ajax({
        url:"http://123.56.196.192:2000/syxa/news-consult/2/"+page+"/9",
        type:"GET",
        data:{page:page},
        error:function(){
            console.log(error);
        },
        success:function(data){
            
            // 刷新页数
            console.info(data);
            var pageno = Math.ceil(data.count/9);
            // alert(pageno);
            var html = "";
            for(var i=1; i<= pageno; i++){
                html += "<li class=\"pager\">" + i + "</li>";                    
                   // $(html).insertBefore(".page-next");
            }
            html = "<li class=\"page-first\">"+"首页"+"</li>"
                 + "<li class=\"page-prev\">"+"上一页"+"</li>"
                 +html
                 +"<li class=\"page-next\">"+"下一页"+"</li>"
                 +"<li class=\"page-last\">"+"末页"+"</li>";
            // $(html).insertBefore(".page-next");
            $("#page-wrapper").html(html);

            // 生成内容
            var htmlString="";
             $.each(data.data,function(i,item){

                // alert(i);
                htmlString += "<div class=\"news-content-item\">"
                             +"<div class=\"news-content-item-title\">"
                             +"<span class=\"item-title\">"+data.data[i].title+"</span>"
                             +"<span class=\"item-date\">"+data.data[i].create_time+"</span>"
                +"<span class=\"item-location\"><i class=\"fa fa-map-marker\" ></i>"+"北京"+"</span></div>"            
                +"<div class=\"news-content-item-text\">"
                +"<a href=\" \">"+"<img class=\"news-img\" src="+data.data[i].top_img+"></a>"
                +"<a href=\" \"><div class=\"news-text\">" +data.data[i].subtitle+"</div></a></div>"
                +"<a href=\" \" class=\"news-more\">"+"了解更多"+"</a></div> ";

              // $(htmlString).insertAfter(".news-content-title");
            })
             $(".news-wrapper").html(htmlString);
        }

    })

}
// 跳转某页函数结束

解决方案

分页原理基本就是
每页数据数 showNum
数据总数 dataNum
总页数 Math.ceil(dataNum / showNum)
当前页 page
上一页 page - 1
下一页 page + 1
当前页数据开始位置 (page - 1) * showNum + 1
当前页数据结束位置 page * showNum
第一页跟最后一页的数据单独判断请求.
所以你需要什么功能就相应的写就可以了

下面摘要一个以前做的例子局部:

var variable = {
    areaInfo: '', // 数据集
    showNum: 5 // 每页显示数
}

// @nowPage 当前页
// @showNum 每页显示数
function page(nowPage,showNum){
    nowPage = (nowPage == null) ? 1 : nowPage; // 当前页
    if (showNum != null) variable.showNum = showNum; // 每页显示数

    var zNum = variable.areaInfo.length; // 总数据数
    var zPage = Math.ceil(zNum / variable.showNum); // 总页数
    var start = (nowPage - 1) * variable.showNum; // 数据开始点
    var HTML = '', // 数据HTML
        PAGE = ''; // 页码HTML
    for (var i = start ; i < nowPage * variable.showNum && i < zNum; i++){
        HTML += '<ul><li id="'+ i +'">'+ variable.areaInfo[i].title +'</li><li>地址:'+ variable.areaInfo[i].address +'</li><li>面积:'+ variable.areaInfo[i].area +'</li><li>等级:'+ variable.areaInfo[i].level +'星</li>';
        if (variable.area == 'C1'){
            if (variable.areaInfo[i].c1_cost == null || variable.areaInfo[i].c1_cost == 0) variable.areaInfo[i].c1_cost = '3830.00';
        }else {
            if (variable.areaInfo[i].c2_cost == null || variable.areaInfo[i].c2_cost == 0) variable.areaInfo[i].c2_cost = '3030.00';
        }
        HTML += '<li class="__CONFIRM"><a href="javascript:;" onclick="set_place('+ variable.areaInfo[i].id +')" style="color:#FFFFFF">确定</a></li><li style="position:absolute;top:20px;right:25px;padding:2px 5px;">';
        HTML += '<a href="/ds/Home/Student/place_map/license/'+ variable.area +'/id/'+ variable.areaInfo[i].id +'" style="color:#999">查看位置</a></li></ul>';
    }
    $('.AreaInfo').html(HTML);

    if (nowPage > 1) PAGE += '<span onclick="page(' + (nowPage-1) + ')">上一页</span>';
    for (i = 1 ; i <= zPage ; i++){
        if (nowPage == i){
            PAGE += '<span onclick="page('+ i +')" class="nowPage">'+ i +'</span>';
        }else{
            PAGE += '<span onclick="page('+ i +')">'+ i +'</span>';
        }
    }
    if (nowPage < zPage) PAGE += '<span onclick="page(' + (nowPage+1) + ')">下一页</span>';
    $('.next_page').html(PAGE);
}

这篇关于ajax - jquery 点击上一页、下一页、末页如何跳转的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆