Jquery插件写法
(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.scrollPagination.loadContent = function (obj, opts) { var target = opts.scrollTarget; var mayLoadContent = $(target).scrollTop() + opts.heightOffset >= $(document).height() - $(target).height(); if (mayLoadContent&& opts.lock) { if (opts.beforeLoad != null) { opts.beforeLoad(); } // alert(1); //加载数据的时候把lock设为false opts.lock = false; $(obj).children().attr('rel', 'loaded'); // alert(2); $.ajax({ type: 'GET', url: opts.contentPage, data: opts.contentData, async: false, success: function (data) { //$(obj).append(data); //alert(data); //加载成功后把lock设为true,可以进行下一次request opts.lock = true; var objectsRendered = $(obj).children('[rel!=loaded]'); if (opts.afterLoad != null) { opts.afterLoad(objectsRendered, data, opts); } }, dataType: 'json' }); } }; $.fn.scrollPagination.init = function (obj, opts) { var target = opts.scrollTarget; $(obj).attr('scrollPagination', 'enabled'); $(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': {}, 'beforeLoad': null, 'afterLoad': null, 'scrollTarget': null, 'heightOffset': 0, 'lock': true }; })(jQuery);