/*
* @Author: Jeay * @Date: 2017-10-9 09:31:11 * @Last Modified by: Jeay
* @Last Modified time: 2017-12-03 12:18:00
*/
/**
* * @param {需要分页的列表jQuery对象} obj * @param {每页显示多少条,默认20} pSize * 使用方式:
* 1. 结构
* div>ul+button.pager+(div>ul.pagination.page_index+ul.pagination.page_pre+ul.pagination.page_no+ul.pagination.page_next+ul.pagination.page_last)+span>strong.total
* 2. 实例化
* 示例: new Page($('.model-case-list li'),10);
* 3. 懒加载
* 列表内的图片src替换为data-src
* 示例:
*/
function Page(obj, pSize, parentObj) {
//初始化变量
var pSize = pSize || 20;
var obj = obj;
var current = 1;
var parentObj = parentObj || obj.parent().parent();
//设置分页类名
var i = 1;
//隐藏所有内容
obj.hide();
//加载图片
var loadPic = function (i) {
if (obj.find("img").length > 0 && !obj.parent().find('.page_' + i).eq(0).find("img").attr("src")) {
//console.log("加载图片:"+i);
obj.parent().find('.page_' + i).each(function () {
$(this).find("img").attr("src", $(this).find("img").attr("data-src"));
})
}
}
//页面切换
var changePage = function (i, hidePre) {
//console.log("页面切换:"+i);
if (i != parentObj.find(".pagination-group a.active").html()) {
//切换内容
if (hidePre !== true) {
obj.hide();
//翻页后滚动
$('html,body').animate({scrollTop: parentObj.offset().top}, 100);
}
obj.parent().find('.page_' + i).show();
//加载图片
if (obj.find("img").length > 0 && obj.find("img").attr("data-src") && !obj.parent().find('.page_' + i).eq(0).find("img").attr("src")) {
loadPic(i);
}
//切换分页
parentObj.find('.page_no li a.active').removeClass('active')
parentObj.find('.page_no li a').eq(i - 1).addClass('active');
}
}
obj.each(function (index) {
if (index == pSize*i) {i++}
$(this).addClass('page_'+i)
});
//显示第一组
$('.page_1').show();
//加载第一组图片
if (obj.find("img").attr("data-src")) {
loadPic(1);
}
//设置分页
var res= '';
for (var j = 1; j'+j+'';
}
else{
res+=''+j+'';
}
};
parentObj.find('.page_no').append(res);
parentObj.find('.total').append(i);
//分页点击事件
parentObj.find(".page_index").click(function () {
changePage(1);
});
parentObj.find(".page_last").click(function() {
changePage(i);
});
parentObj.find(".page_pre").click(function () {
current = current - 1 < 1 ? 1 : current - 1;
changePage(current);
});
parentObj.find(".page_next").click(function () {
current = current + 1 > i ? i : current + 1;
changePage(current);
});
parentObj.find('.page_no').on('click', 'li', function () {
changePage($(this).index()+1);
});
parentObj.find(".pager").click(function() {
if (current == i - 1) { parentObj.find(".pager span").hide() };
current = current + 1 > i ? i : current + 1;
changePage(current,true);
});
}