最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實(shí)現(xiàn)前端分頁(yè)控件

 更新時(shí)間:2021年08月20日 13:18:19   作者:小永子  
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)前端分頁(yè)控件的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

現(xiàn)在web注重用戶體驗(yàn)與交互性,ajax 提交數(shù)據(jù)的方式很早就流行了,它能夠在不刷新網(wǎng)頁(yè)的情況下局部刷新數(shù)據(jù)。前端分頁(yè)多是用ajax請(qǐng)求數(shù)據(jù)(其他方式也有比如手動(dòng)構(gòu)造表單模擬提交事件等)。通過js將查詢參數(shù)構(gòu)造好發(fā)向后臺(tái),后臺(tái)處理后以特定的格式返回,多為json,比較流行處理起來(lái)也很方便。當(dāng)后臺(tái)數(shù)據(jù)到達(dá)后,瀏覽器重新渲染界面當(dāng)然也包括js分頁(yè)控件,如果覺得每次繪制分頁(yè)控件對(duì)前端性能有影響也可以不繪制,但實(shí)現(xiàn)起來(lái)相對(duì)麻煩。

本人寫的分頁(yè)控件參考了其他網(wǎng)友的代碼,鏈接忘了,控件接受四個(gè)參數(shù)或一個(gè)對(duì)象,其實(shí)是一樣的對(duì)于后者只不過將四個(gè)參數(shù)放在一個(gè)對(duì)象中。pIndex:每次請(qǐng)求的頁(yè)碼,pSize:每次請(qǐng)求的頁(yè)容量,container: 放分頁(yè)控件的容器,fn:如何向服務(wù)器請(qǐng)求數(shù)據(jù)

代碼中主要用到了閉包,將上一次的請(qǐng)求信息保存起來(lái),以備下次使用,雖然代碼可以直接拿來(lái)用但是樣式不是通用的,需要每次調(diào)樣式還好樣式比較簡(jiǎn)單。

function pagination(obj){
    /*pageIndex: index,
pageSize: size,
count:   count,  
container: container,
fn  :   fn
     */
    if(!obj||typeof obj!="object"){
        return false;
    }
    var pageIndex= obj.pageIndex||1,
      pageSize=obj.pageSize||10,
      count= obj.count||0,
      container= obj.container,
      callback=obj.fn||function(){};
    var pageCount =Math.ceil(count/pageSize); 
    if(pageCount==0){
        return false ;
    }  
    if(pageCount<pageIndex){
        return false;
    }
    /*事件綁定*/
    function bindEvent(){
        //上一頁(yè)事件
        $(container).find(">ul>.pg-prev").unbind("click").bind("click",function(){
                if(pageIndex <=1){
                return false ;
                }
                if(typeof callback=="function"){
                pageIndex--;
                pageIndex = pageIndex<1?1:pageIndex;
                obj.pageIndex= pageIndex;
                callback(pageIndex);
                pagination(obj);
                }
                });
        //下一頁(yè)事件
        $(container).find(">ul>.pg-next").unbind("click").bind("click",function(){
                if(pageIndex ==pageCount){
                return false ;
                }
                if(typeof callback=="function"){
                pageIndex++;
                pageIndex =pageIndex >pageCount?pageCount:pageIndex;
                obj.pageIndex= pageIndex;
                callback(pageIndex);
                pagination(obj);
                }
                });
        $(container).find(">ul>li:not(.pg-more):not(.pg-prev):not(.pg-next)").unbind("click").bind("click",function(){
                pageIndex= +$(this).html();
                pageIndex = isNaN(pageIndex)?1:pageIndex;
                obj.pageIndex= pageIndex;
                if(typeof callback=="function"){
                callback(pageIndex);
                pagination(obj);
                }
                });
    };

    /*畫樣式*/
    function printHead(){
        var html=[];
        html.push('<li class="pg-prev '+(pageIndex==1?"pg-disabled":"")+'">上一頁(yè)</li>');
        return html.join("");
    }
    function printBody(){
        var html=[];
        var render=function(num,start){
            start=start||1;
            for(var i=start;i<=num;i++){
                html.push('<li class="'+(pageIndex==i?"pg-on":"")+'">'+i+'</li>');
            }
        }
        if(pageCount<=7){
            render(pageCount);
        }else{
            if(pageIndex <4){
                render(4);
                html.push('<li class="pg-more">...</li>');
                html.push('<li >'+pageCount+'</li>');    
            }else{
                html.push('<li >1</li>');  
                html.push('<li class="pg-more">...</li>');
                if(pageCount-pageIndex>3){
                    render(pageIndex+1,pageIndex-1);
                    html.push('<li class="pg-more">...</li>');
                    html.push('<li >'+pageCount+'</li>');
                }else{
                    render(pageCount,pageCount-3);
                }
            }
        }
        return html.join("");
    }
    function printTail(){
        var html=[];
        html.push('<li class="pg-next '+(pageIndex==pageCount?"pg-disabled":"")+'">下一頁(yè)</li>');
        return html.join("");
    }
    function show(){
        container.innerHTML= '<ul>'+printHead()+printBody()+printTail()+'</ul>';
    }
    show();
    bindEvent();
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • javascript禁用鍵盤功能鍵讓右擊及其他鍵無(wú)效

    javascript禁用鍵盤功能鍵讓右擊及其他鍵無(wú)效

    禁用鍵盤功能鍵的方法有很多,在本文為大家詳細(xì)介紹下,使用javascript如何實(shí)現(xiàn)禁用鍵盤功能鍵及其他鍵的方法,感興趣的朋友可以參考下
    2013-10-10
  • js 調(diào)整select 位置的函數(shù)

    js 調(diào)整select 位置的函數(shù)

    js 調(diào)整select 位置的函數(shù),向上移動(dòng),向下移動(dòng),移動(dòng)到最上,移動(dòng)到最后 這里把項(xiàng)目中寫過的幾個(gè)js函數(shù)來(lái)給大家分享,功能是通過js來(lái)實(shí)現(xiàn)對(duì)select 中的option的位置進(jìn)行移動(dòng),代碼如下
    2008-02-02
  • JS實(shí)現(xiàn)屏蔽shift,Ctrl,alt等功能鍵的方法

    JS實(shí)現(xiàn)屏蔽shift,Ctrl,alt等功能鍵的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)屏蔽shift,Ctrl,alt等功能鍵的方法,涉及javascript針對(duì)鍵盤按鍵的獲取與操作技巧,需要的朋友可以參考下
    2015-06-06
  • Echarts圖表如何利用formatter自定義tooltip的內(nèi)容和樣式

    Echarts圖表如何利用formatter自定義tooltip的內(nèi)容和樣式

    這篇文章主要給大家介紹了關(guān)于Echarts圖表如何利用formatter自定義tooltip的內(nèi)容和樣式的相關(guān)資料,echarts的圖表配置非常的靈活自由,但是不熟悉的時(shí)候容易不知道怎么配置,需要的朋友可以參考下
    2023-06-06
  • 在webstorm中配置less的方法詳解

    在webstorm中配置less的方法詳解

    這篇文章主要介紹了在webstorm中配置less的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • 微信小程序ibeacon三點(diǎn)定位詳解

    微信小程序ibeacon三點(diǎn)定位詳解

    這篇文章主要為大家詳細(xì)介紹了微信小程序ibeacon三點(diǎn)定位的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • bootstrap table表格客戶端分頁(yè)實(shí)例

    bootstrap table表格客戶端分頁(yè)實(shí)例

    這篇文章主要為大家詳細(xì)介紹了bootstrap table表格客戶端分頁(yè)實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 用純JS實(shí)現(xiàn)二級(jí)菜單效果

    用純JS實(shí)現(xiàn)二級(jí)菜單效果

    這篇文章主要為大家詳細(xì)介紹了用純JS實(shí)現(xiàn)二級(jí)菜單效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • JS設(shè)計(jì)模式之狀態(tài)模式概念與用法分析

    JS設(shè)計(jì)模式之狀態(tài)模式概念與用法分析

    這篇文章主要介紹了JS設(shè)計(jì)模式之狀態(tài)模式概念與用法,簡(jiǎn)單講述了狀態(tài)模式的概念、功能、應(yīng)用場(chǎng)景并結(jié)合javascript實(shí)例形式分析了狀態(tài)模式的簡(jiǎn)單定義及使用方法,需要的朋友可以參考下
    2018-02-02
  • 利用javascript中的call實(shí)現(xiàn)繼承

    利用javascript中的call實(shí)現(xiàn)繼承

    利用javascript中的call實(shí)現(xiàn)繼承...
    2007-01-01

最新評(píng)論

谷城县| 保定市| 垦利县| 曲靖市| 莲花县| 舟曲县| 青海省| 镶黄旗| 和平区| 永新县| 报价| 平湖市| 皋兰县| 六安市| 江源县| 乐都县| 翁源县| 云和县| 达拉特旗| 平利县| 蒙阴县| 浮山县| 民勤县| 丹棱县| 改则县| 博野县| 阳春市| 渑池县| 百色市| 油尖旺区| 日喀则市| 台东市| 仙居县| 吉水县| 泌阳县| 兴国县| 五指山市| 邓州市| 澎湖县| 固阳县| 乐至县|