64 lines
1.7 KiB
JavaScript
64 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);
|