jQuery实现翻页插件

推荐一个自己的博客:JS -- 手动实现数组原生方法​​​​​​​

使用编辑器:vs code

主要用到的技术:css3 + jQuery

欢迎加QQ:1759668379一起讨论

html:这次html里面也没写什么东西,主要实在js文件中利用for循环动态生成结构。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>翻页插件</title>
    <link rel="stylesheet" href="fycj.css">
</head>
<body>
    <div class="page"></div>
    <script src="jquery.js"></script>
    <script src="fycj.js"></script>
    <script>
        $('.page').create({
            pageCount:20,//总页数
            current:5,//当前页码
            backFn:function(p){}//回调函数
        })
    </script>
</body>
</html>

css文件:

*{
    margin: 0;
    padding: 0;
    list-style: none;
    text-decoration: none;
}
.page{
    width: 500px;
    height: 200px;
    margin: 100px auto;
}
.page a,
.page .noPre,
.current{
    display: inline-block;
    padding: 0 10px;
    height: 20px;
    line-height: 20px;
    border: 1px solid #ddd;
    color: #428bca;
    border-radius: 4px;
    vertical-align: middle;
    margin-left: 5px;
}
.page a:hover{
    border:1px solid #428bca;
}
.page .noPre{
    background-color: #ddd;
    color: #eee;

}
.page .current{
    background-color: #428bca;
    color:#eee;
}

js文件:内容看注释好了

(function(){
    //入口函数
    function init(dom,arg){
        //判断传入的页码是否符合标准
        if(arg.current <= arg.pageCount){
            fillhtml(dom,arg);
            bindEvent(dom,arg);
        }else{
            alert('请输入正确的页码')
        }
    }
    //动态构建网页内容
    function fillhtml(dom,arg){
        //清空页面布局
        dom.empty();
        //大体分三部分:上一页,中间页码,下一页
        //上一页
        //上一页又分为可点击与不可点击两种
        if(arg.current > 1){
            dom.append('<a class="prePage" href="#">上一页</a>');
        }else {
            dom.remove('.prePage');
            dom.append('<span class="noPre">上一页</span>');
        }
        //中间页码
        //中间页码又分为中间可显示的5个页码与...与两端的页码
        //第一页
        if(arg.current != 1 && arg.current > 3){
            dom.append('<a class="tcdNum" href="#">1</a>');
        }
        //判断当前页面是否距离第一页大于3,是则需要...
        if(arg.current-3 > 1){
            dom.append('<span>...</span>');
        }
        //判断中间需要显示的页码
        var start = arg.current-2;
        var end = arg.current+2;
        for(;start <= end;start++){
            //判断开始页面是否大于1且是否小于最大页码
            if(start >= 1 && start <= arg.pageCount){
                //判断是否是选中页面
                if(start == arg.current){
                    dom.append('<span class="current">'+start+'</span>');
                } else {
                    dom.append('<a class="tcdNum" href="#">'+start+'</a>');
                }
            }
        }
        //后置的...
        if(arg.current+3 < arg.pageCount){
            dom.append('<span>...</span>');
        }
        //最后一页
        if(arg.current != arg.pageCount && arg.current < arg.pageCount-2){
            dom.append('<a class="tcdNum" href="#">'+arg.pageCount+'</a>');
        }
        //下一页
        //下一页与上一页类似
        if(arg.current < arg.pageCount){
            dom.append('<a class="nextPage" href="#">下一页</a>');
        }else {
            dom.remove('.prePage');
            dom.append('<span class="noPre">下一页</span>')
        }
    }
    //处理点击事件
    function bindEvent(dom,arg){
        //分为点击上一页,点击页码与点击下一页
        //点击上一页
        //获得当前页面,-1 然后调用fillhtml重绘页面
        dom.on('click','.prePage',function(){
            var cur=parseInt(dom.children('.current').text());
            fillhtml(dom,{'current':cur-1,'pageCount':arg.pageCount});
            if(typeof arg.backFn=='function'){
                arg.backFn(cur-1);
            }
        })
        //点击页码
        //获得点击页码,调用fillhtml重绘页面
        dom.on('click','.tcdNum',function(){
            var cur=parseInt($(this).text());
            fillhtml(dom,{'current':cur,'pageCount':arg.pageCount});
            if(typeof arg.backFn=='function'){
                arg.backFn(cur);
            }
        })
        //点击下一页
        //获得当前页面,+1 然后调用fillhtml重绘页面
        dom.on('click','.nextPage',function(){
            var cur=parseInt(dom.children('.current').text());
            fillhtml(dom,{'current':cur+1,'pageCount':arg.pageCount});
            if(typeof arg.backFn=='function'){
                arg.backFn(cur+1);
            }
        })
    }
    //扩展jquery封装函数
    $.fn.create=function(option){
// 
//      extend函数:当调用create时,如果传了参数option
//      则使用传入的参数,否则使用预定义的参数
// 
        var arg=$.extend({
            pageCount:10,
            current:2,
            backFn:function(){}
        },option)
        init(this,arg);
    }
})(jQuery);

效果图:

欢迎留言批评指正。

(完)

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值