您的位置:首页 > Web前端 > JQuery

jQuery ScrollPagination 自动增加分页及重复加载问题

2014-07-06 15:32 417 查看
一、当第一次未加载完时会出现重复加载的情况。我的解决办法时加了个startScrollPagination;在beforeLoad和afterLoad中配合作用stopScrollPagination和startScrollPagination;

二、分页问题搞了很久,开始打算定义个全局变量或搞个hidden input来配合contentData使用,都没能成功,最终直接修改源代码解决问题;

/*
**	Anderson Ferminiano
**	contato@andersonferminiano.com -- feel free to contact me for bugs or new implementations.
**	jQuery ScrollPagination
**	28th/March/2011
** http://andersonferminiano.com/jqueryscrollpagination/ **	You may use this script for free, but keep my credits.
**	Thank you.
*/

(function( $ ){

$.fn.scrollPagination = function(options) {

var opts = $.extend($.fn.scrollPagination.defaults, options);
var target = opts.scrollTarget;
if (target == null){
target = obj;
}
opts.scrollTarget = target;

return this.each(function() {
$.fn.scrollPagination.init($(this), opts);
});

};

$.fn.stopScrollPagination = function(){
return this.each(function() {
$(this).attr('scrollPagination', 'disabled');
});

};

$.fn.startScrollPagination = function(){
return this.each(function() {
$(this).attr('scrollPagination', 'enabled');
});

};

$.fn.scrollPagination.loadContent = function(obj, opts){
var target = opts.scrollTarget;
var mayLoadContent = $(target).scrollTop()+opts.heightOffset >= $(document).height() - $(target).height();
if (mayLoadContent){
if (opts.beforeLoad != null){
opts.beforeLoad();
}
$(obj).children().attr('rel', 'loaded');
opts.contentData.page = $(obj).attr('nextPage'); // Add
$.ajax({
type: 'POST',
url: opts.contentPage,
data: opts.contentData,
success: function(data){
$(obj).append(data);
var objectsRendered = $(obj).children('[rel!=loaded]');
$(obj).attr('nextPage', Number($(obj).attr('nextPage')) + 1); // Add
if (opts.afterLoad != null){
opts.afterLoad(objectsRendered);
}
},
dataType: 'html'
});
}

};

$.fn.scrollPagination.init = function(obj, opts){
var target = opts.scrollTarget;
$(obj).attr('scrollPagination', 'enabled');
$(obj).attr('nextPage', opts.nextPage); // Add

$(target).scroll(function(event){
if ($(obj).attr('scrollPagination') == 'enabled'){
$.fn.scrollPagination.loadContent(obj, opts);
}
else {
event.stopPropagation();
}
});

$.fn.scrollPagination.loadContent(obj, opts);

};

$.fn.scrollPagination.defaults = {
'contentPage' : null,
'contentData' : {},
'nextPage'	: 2, // Add
'beforeLoad': null,
'afterLoad': null	,
'scrollTarget': null,
'heightOffset': 0
};
})( jQuery );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: