63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
(function() {
|
|
this.Pager = {
|
|
init: function(limit, preload, disable, callback) {
|
|
this.limit = limit != null ? limit : 0;
|
|
this.disable = disable != null ? disable : false;
|
|
this.callback = callback != null ? callback : $.noop;
|
|
this.loading = $('.loading').first();
|
|
if (preload) {
|
|
this.offset = 0;
|
|
this.getOld();
|
|
} else {
|
|
this.offset = this.limit;
|
|
}
|
|
return this.initLoadMore();
|
|
},
|
|
getOld: function() {
|
|
this.loading.show();
|
|
return $.ajax({
|
|
type: "GET",
|
|
url: $(".content_list").data('href') || location.href,
|
|
data: "limit=" + this.limit + "&offset=" + this.offset,
|
|
complete: (function(_this) {
|
|
return function() {
|
|
return _this.loading.hide();
|
|
};
|
|
})(this),
|
|
success: function(data) {
|
|
Pager.append(data.count, data.html);
|
|
return Pager.callback();
|
|
},
|
|
dataType: "json"
|
|
});
|
|
},
|
|
append: function(count, html) {
|
|
$(".content_list").append(html);
|
|
if (count > 0) {
|
|
return this.offset += count;
|
|
} else {
|
|
return this.disable = true;
|
|
}
|
|
},
|
|
initLoadMore: function() {
|
|
$(document).unbind('scroll');
|
|
return $(document).endlessScroll({
|
|
bottomPixels: 400,
|
|
fireDelay: 1000,
|
|
fireOnce: true,
|
|
ceaseFire: function() {
|
|
return Pager.disable;
|
|
},
|
|
callback: (function(_this) {
|
|
return function(i) {
|
|
if (!_this.loading.is(':visible')) {
|
|
_this.loading.show();
|
|
return Pager.getOld();
|
|
}
|
|
};
|
|
})(this)
|
|
});
|
|
}
|
|
};
|
|
|
|
}).call(this);
|