A simple infinite scroll jQuery plugin
Mar 2, 2017 · 1 分钟阅读

;(function(factory) {
  if (typeof define === 'function' && define.amd) {
    define(['jquery'], factory);
  } else {
    factory(jQuery);
  }
}(function($) {
  function infiniteScroll(el, options) {
    this.$el = $(el);
    this.defaults = {
      offset: 100,
      callback: function() {}
    };
    this.cfgs = $.extend(this.defaults, options);
    this.bind();
  }

  infiniteScroll.prototype = {
    scroll: function() {
      var $el = this.$el;
      var offset = $el[0].scrollHeight - $(window).height() - $el.scrollTop();
      if (offset <= this.cfgs.offset) this.cfgs.callback();
    },

    bind: function(isUnbind) {
      var $el = this.$el;
      $el = $el[0].tagName && $el[0].tagName.toUpperCase() === 'BODY' ? $(document) : $el;
      $el[isUnbind ? 'off' : 'on']('scroll.infinite', $.proxy(this.scroll, this));
    },

    destroy: function() {
      this.bind(true);
    }
  };

  $.fn.infiniteScroll = function(options) {
    var args = Array.prototype.slice.call(arguments, 1);
    return this.each(function() {
      var instance = $(this).data('infiniteScroll');
      if (!instance) {
        $(this).data('infiniteScroll', new infiniteScroll(this, options));
      } else if (typeof options === 'string') {
        instance[options].apply(instance, args);
      }
    });
  };
}));
← Previous Post Next Post →

Ryun的博客
与其感慨路难行,不如马上出发。

atom css design git html javascript jekyll laravel life mac mobile optimization sublime tool vscode vue
mac

About

你好,❤朋友

这里是 Ryun 的博客 📝

📝记录了我学习 🔎的过程

作为一名前端攻城狮 🦁

希望能和大家一起 🔎

共同进步 🏃

🦁的特长:

  • HTML5
  • CSS3
  • JavaScript
  • Vue.js
  • 微信小程序
  • 熟练配合 Node.js、PHP 和 Laravel
  • 熟练使用各种开发和设计工具

🦁喜欢 🆒🆒的东西

对提升效率和美感的事物有兴趣 😋

欢迎 👏交流


see this hugo-theme-dream-ink