forked from gilbitron/Infiniscroll
-
Notifications
You must be signed in to change notification settings - Fork 0
/
infiniscroll.min.js
8 lines (8 loc) · 1.77 KB
/
infiniscroll.min.js
1
2
3
4
5
6
7
8
/*
* Infiniscroll v1.0
* https://github.com/gilbitron/Infiniscroll
*
* Copyright 2014, Gilbert Pellegrom
* Free to use and abuse under the MIT license.
* http://opensource.org/licenses/MIT
*/(function(e,t,n,r){function o(t,n){this.el=t;this.$el=e(this.el);this.options=e.extend({},s,n);this._isLoading=!1;this._nextLink=null;this.init()}var i="infiniscroll",s={navSelector:".pagination",nextSelector:".pagination a.next",loadingSelector:".loading",pageFragment:".content",scrollBuffer:200,scrollOnLoad:!0,scrollOnLoadDistance:200,scrollOnLoadSpeed:500,onInit:function(){},beforeContentLoaded:function(e){},afterContentLoaded:function(e){}};o.prototype={init:function(){var n=this;e(this.options.navSelector).hide();e(t).on("scroll",function(){n.doScroll.apply(n)});this.options.onInit.call(this)},doScroll:function(){if(this._isLoading)return;if(e(t).scrollTop()>=e(n).height()-e(t).height()-this.options.scrollBuffer){this._isLoading=!0;this._nextLink||(this._nextLink=e(this.options.nextSelector));if(this._nextLink.attr("href")){this.options.beforeContentLoaded.call(this,this._nextLink);e(this.options.loadingSelector).show();var r=this,i=this._nextLink.attr("href");this.options.pageFragment&&(i+=" "+this.options.pageFragment);e("<div/>").load(i,function(){var i=e(this).children(),s=!1;r.options.scrollOnLoad&&e(t).scrollTop()===e(n).height()-e(t).height()&&(s=!0);i.find(r.options.navSelector).hide();r._nextLink=i.find(r.options.nextSelector);e(r.options.loadingSelector).hide();i.appendTo(r.el);s&&e("html, body").animate({scrollTop:e(t).scrollTop()+r.options.scrollOnLoadDistance},r.options.scrollOnLoadSpeed);r._isLoading=!1;r.options.afterContentLoaded.call(r,i)})}}}};e.fn[i]=function(t){return this.each(function(){e.data(this,i)||e.data(this,i,new o(this,t))})}})(jQuery,window,document);