ajax按需加载分页组件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style type="text/css">
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}html{font-size: 12px;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;}table{border-collapse:collapse;border-spacing:0;}q:before,q:after{content:‘‘;}object,embed{vertical-align:top;}hr,legend{display:none;}img,abbr,acronym,fieldset{border:0;}ul li{list-style-type:none;}a,label{cursor:pointer;}img{vertical-align:bottom;margin:0;padding:0;}a{text-decoration:none;outline: none;}.clearfix:after{content: "."; visibility: hidden; display: block; height: 0.1px; font-size:0.1em; line-height: 0; clear: both;}.clearfix {*zoom:1;}input ,textarea,select{outline: none;border:1px solid #bfbfbf;}th{font-weight: 400;}
button{cursor: pointer;border:none;outline: none;}textarea{border: 1px solid #ccc;resize: none;outline: none;overflow: hidden;padding: 5px;}select{outline: none;}.text_overflow{overflow:hidden;white-space: nowrap;
text-overflow: ellipsis;}
html {
font-family: "Microsoft YaHei",tahoma,arial,"Hiragino Sans GB","\5b8b\4f53",sans-serif;
font-size:14px;
color: #5c5d5e;
}
/* 公共分页模块 */
.index-page {
float:right;
padding-top:10px;
}
.index-page .index-target {
width:25px;
height:14px;
line-height: 14px;
padding:3px 5px;
border-radius:2px;
vertical-align: middle;
}
.index-page .target {
margin-right:30px;
color:#808080;
}
.index-page .page-main {
float:right;
margin-top:-10px;
}
.index-page .page-main li {
display: none;
float:left;
width:37px;
height:37px;
border:1px solid #e6e6e6;
text-align:center;
line-height:37px;
margin-right: 5px;
}
.index-page .page-main .block {
display: block;
}
.index-page .page-main a {
display:block;
height:100%;
color:#c0c0c0;
}
.index-page .page-main a:hover ,
.index-page .page-main .active {
background-color:#f75000;
color:#fff;
}
.index-page .page-main .unable-page {
cursor: not-allowed;
background-color: #dedede;
}
.index-page .page-main .unable-page:hover {
background-color: #dedede;
}
.index-page .page-main .prev ,
.index-page .page-main .next {
display: block;
height: 9px;
padding: 13px 14px 15px 15px;
}
.index-page .page-main .prev-i ,
.index-page .page-main .next-i {
display:block;
width: 0;
height: 0;
border-top: 6px solid transparent;
border-right: 8px solid #c0c0c0;
border-bottom: 6px solid transparent;
}
.index-page .page-main .next-i {
border-top: 6px solid transparent;
border-right: none;
border-left: 8px solid #c0c0c0;
border-bottom: 6px solid transparent;
}
</style>
</head>
<body>
<div class="index-page" id="pageBox"></div>
<script type="text/javascript" src="http://static.nysochina.com/static/js/lib/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
(function ($) {
$.fn.pageing = function(options ,fn){
// 注入的html结构
var html = ‘总<span class="allNum"></span>条数据 <span class="now-page"></span>/<span class="allPage"></span>页 至 <input type="text" class="index-target" /> 页 <a href="###" class="target" class="goPage">跳转</a><ul class="page-main" id="pageMain"><li class="block"><a href="###" class="prev unable-page"><i class="prev-i"></i></a></li><li class="block last"><a href="###" class="next"><i class="next-i"></i></a></li></ul>‘;

// 初始化
$(this).html(‘‘).append(html);
var oThis = $(this).find(‘ul‘),//容器
nowPage = $(‘#pageBox .now-page‘) || options.nowPage,//目前多少页元素(显示)
indexTarget = $(‘#pageBox .index-target‘) || options.indexTarget,//目前多少页元素(输入框)
target =$(‘#pageBox .target‘) || options.target,//跳转元素
prev = options.prev || $(‘#pageBox .prev‘),//上一页元素
next = options.next || $(‘#pageBox .next‘),//下一页元素
last = next.parent(),
allNum = options.allNum,//总数据条数
pageNum = options.pageNum,//总页数
index = options.index || 1;
eachPage = options.eachPage || 10,//每页显示多少条记录
max = options.max || 5,//最多显示多少页数
min = 0,
page = null,
fn = fn || function() {};
nowPage.text(index);
$(‘#pageBox .allNum‘).text(allNum);
$(‘#pageBox .allPage‘).text(pageNum);
if( pageNum === 1 ) {
next.addClass(‘unable-page‘);
}
$(‘#pageBox .page‘).remove();
for(var i = 1;i<= pageNum ; i++) {
var $li = $(‘<li class="page"></li>‘);
var $a = $("<a href=‘###‘></a>");
if( i === index ) {
$a.addClass(‘active‘);
}
$a.text( i );
$li.append($a);
last.before($li);
}
page = $(‘.page‘);
page.hide();
show(index);
showPageindex(0,max, index-1);
// 点击事件
oThis.find(‘a‘).on(‘click‘ , function() {
oThis.find(‘li‘).each(function() {
if( $(this).children(‘a‘).hasClass(‘active‘) ) {
index = $(this).index();
}
});
if( $(this).hasClass(‘unable-page‘) ) {
return;
} else if($(this).hasClass(‘prev‘) ) {
index --;
} else if( $(this).hasClass(‘next‘) ) {
index ++;
} else {
index = $(this).parent().index();
}
show(index);
showPageindex(min , max, index-1);
fn(index);
});

// 点击跳转按钮
target.click(function() {
index = indexTarget.val();
if( index !== ‘‘ ) {
index = parseInt(indexTarget.val()) ;
if( index < 1 ) {
alert(‘输入页数不能小于1!‘);
return false;
} else if (index > pageNum) {
alert(‘输入页数不能大于总页数!‘);
return false;
} else {
showPageindex(min , max, index-1);
show(index);
fn(index);
}
} else {
alert(‘请输入页数‘);
}
});

// 限制只能输入数字
indexTarget.keyup(function() {
var value = $(this).val();
$(this).val(value.replace(/\D/g,""));
}).keydown(function() {
var value = $(this).val();
$(this).val(value.replace(/\D/g,""));
});

// 样式控制
function show(index){
oThis.find(‘a‘).removeClass(‘unable-page‘);
if(index === 1) {
prev.addClass(‘unable-page‘);
}
if(index === pageNum ) {
next.addClass(‘unable-page‘);
}
oThis.find(‘a‘).removeClass(‘active‘);
page.eq(index-1).children(‘a‘).addClass(‘active‘);
nowPage.text(index);
}
//控制哪些页码显示
function showPageindex(min , max , index){
if( index <= max/2) {
min = 0;
max = max;
} else if(pageNum - index <= Math.ceil(max/2) ){
min = pageNum - max;
max = pageNum;
} else {
min = Math.round(index - max/2);
max = Math.round(index + max/2);
}
page.hide();
for(var i = min; i< max ; i++) {
page.eq(i).show();
}
}
};
})(jQuery);

var options = {
index :1,//当前页
allNum: 1,//总共多少数据
eachPage : 3,//每页显示数据条数
pageNum : 10,//一共多少页数据
max : 5//最多显示多少页
};
$(‘#pageBox‘).pageing(options);
</script>
</body>
</html>

时间: 2024-08-07 21:43:32

ajax按需加载分页组件的相关文章

react在高版本webpack下按需加载antd组件

1.暴露出配置文件 yarn eject 2.安装yarn add less less-loader antd  babel-plugin-import   (less需要在2.7.3版本和3.0之间.yarn add [email protected]) 3.在webpack.config文件中配置 http://www.imooc.com/article/288009 4.重启项目 yarn start 原文地址:https://www.cnblogs.com/cazj/p/11231422

利用 React/Redux/React-Router 4/webpack 开发大型 web 项目时如何按需加载

如何设计一个大型 web 项目? React + webpack 如何按需加载? React + React-Router 4 + webpack 如何按需加载? React + Redux + React-Router 4 + webpack 如何按需加载? 实录提要: bundle-loader 和 Webpack 内置的 import() 有什么区别? 按需加载能否支持通过请求后台数据,动态配置页面的的应用场景? 参与过几个 React 项目,被依赖包搞的晕晕的,不知道该怎么选择? 什么包

使用babel-plugin-import实现antd组件库中的组件按需加载

Ant Design是蚂蚁金服基于react实现的一个UI 设计库,基于 npm + webpack + babel 的工作流,支持 ES2015.babel-plugin-import 可以从组件库中仅仅引入需要的模块,而不是把整个库都引入,从而提高性能. 如果使用 import { Button } from 'antd'; 的写法会引入 antd 下所有的模块. 为了提高打包编译的速度和浏览器下载资源的速度,可以通过以下的写法来只加载需要的组件: import Button from 'a

如何使用AJAX实现按需加载

按需加载的优势:在实际调查中发现,很多的网民在游览网站时具有明确的指向性,往往在进入主页后直接搜索进入自己需要的商品列表内,如果在客户进入主页时将主页信息全部加载完毕后展示给顾客,会极大的浪费网站资源,同时也会降低客户体验度,因而按需加载则成为了当今网站构建的主流; <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>按

vue项目优化之按需加载组件-使用webpack require.ensure

vue项目优化之按需加载组件-使用webpack require.ensure 使用 vue-cli构建的项目,在 默认情况下 ,执行 npm run build  会将所有的js代码打包为一个整体, 打包位置是 dist/static/js/app.[contenthash].js 类似下面的路由代码 router/index.js  路由相关信息,该路由文件引入了多个 .vue组件 import Hello from '@/components/Hello' import Province

组件库按需加载 借助babel-plugin-import实现

前段时间一直在基于webpack进行前端资源包的瘦身.在项目中基于路由进行代码分离,http://www.cnblogs.com/legu/p/7251562.html.对于公司内部的组件库,所有内容一次性加载源文件很大.比如登录主要就用了button和input,不需要打包table, tree这种复杂组件的. 在使用ant-design的时候,发现ant实现了按需加载,https://ant.design/docs/react/introduce-cn.所以想着自己的组件也支持相关的功能.

[转] 组件库按需加载 借助babel-plugin-import实现

前段时间一直在基于webpack进行前端资源包的瘦身.在项目中基于路由进行代码分离,http://www.cnblogs.com/legu/p/7251562.html.对于公司内部的组件库,所有内容一次性加载源文件很大.比如登录主要就用了button和input,不需要打包table, tree这种复杂组件的. 在使用ant-design的时候,发现ant实现了按需加载,https://ant.design/docs/react/introduce-cn.所以想着自己的组件也支持相关的功能.

webpack和vue的按需加载组件、console、抓包

1.webpack和vue的按需加载组件 webpack特有的懒加载文件的方式,很大的提升了webpack打包SPA应用的在性能方面. 而从webpack2以后require.ensure已经被import()替换. const Recommend = (resolve) => { import('components/recommend/recommend').then((module) => { resolve(module) }) } export default new Router(

Vue 路由的懒加载和组件的按需加载方法

// aview: function(resolve) { // require(["./a.vue"], resolve); // }, // bview: function(resolve) { // require(["./b.vue"], resolve); // } aview:require("./a.vue"), bview:require("./b.vue"), "懒加载也叫延迟加载,即在需要的时候进