/** * dropload * 西门(http://ons.me/526.html) * 0.9.1(161205) */ !function(a){"use strict";function g(a){a.touches||(a.touches=a.originalevent.touches)}function h(a,b){b._starty=a.touches[0].pagey,b.touchscrolltop=b.$scrollarea.scrolltop()}function i(b,c){c._cury=b.touches[0].pagey,c._movey=c._cury-c._starty,c._movey>0?c.direction="down":c._movey<0&&(c.direction="up");var d=math.abs(c._movey);""!=c.opts.loadupfn&&c.touchscrolltop<=0&&"down"==c.direction&&!c.islockup&&(b.preventdefault(),c.$domup=a("."+c.opts.domup.domclass),c.upinsertdom||(c.$element.prepend('
'),c.upinsertdom=!0),n(c.$domup,0),d<=c.opts.distance?(c._offsety=d,c.$domup.html(c.opts.domup.domrefresh)):d>c.opts.distance&&d<=2*c.opts.distance?(c._offsety=c.opts.distance+.5*(d-c.opts.distance),c.$domup.html(c.opts.domup.domupdate)):c._offsety=c.opts.distance+.5*c.opts.distance+.2*(d-2*c.opts.distance),c.$domup.css({height:c._offsety}))}function j(b){var c=math.abs(b._movey);""!=b.opts.loadupfn&&b.touchscrolltop<=0&&"down"==b.direction&&!b.islockup&&(n(b.$domup,300),c>b.opts.distance?(b.$domup.css({height:b.$domup.children().height()}),b.$domup.html(b.opts.domup.domload),b.loading=!0,b.opts.loadupfn(b)):b.$domup.css({height:"0"}).on("webkittransitionend moztransitionend transitionend",function(){b.upinsertdom=!1,a(this).remove()}),b._movey=0)}function k(a){""!=a.opts.loaddownfn&&a.opts.autoload&&a._scrollcontentheight-a._threshold<=a._scrollwindowheight&&m(a)}function l(a){a._scrollcontentheight=a.opts.scrollarea==b?e.height():a.$element[0].scrollheight}function m(a){a.direction="up",a.$domdown.html(a.opts.domdown.domload),a.loading=!0,a.opts.loaddownfn(a)}function n(a,b){a.css({"-webkit-transition":"all "+b+"ms",transition:"all "+b+"ms"})}var f,b=window,c=document,d=a(b),e=a(c);a.fn.dropload=function(a){return new f(this,a)},f=function(a,b){var c=this;c.$element=a,c.upinsertdom=!1,c.loading=!1,c.islockup=!1,c.islockdown=!1,c.isdata=!0,c._scrolltop=0,c._threshold=0,c.init(b)},f.prototype.init=function(f){var l=this;l.opts=a.extend(!0,{},{scrollarea:l.$element,domup:{domclass:"dropload-up",domrefresh:'
↓下拉刷新
',domupdate:'
↑释放更新
',domload:'
加载中...
'},domdown:{domclass:"dropload-down",domrefresh:'
↑上拉加载更多
',domload:'
加载中...
',domnodata:'
暂无数据
'},autoload:!0,distance:50,threshold:"",loadupfn:"",loaddownfn:""},f),""!=l.opts.loaddownfn&&(l.$element.append('
'+l.opts.domdown.domrefresh+"
"),l.$domdown=a("."+l.opts.domdown.domclass)),l._threshold=l.$domdown&&""===l.opts.threshold?math.floor(1*l.$domdown.height()/3):l.opts.threshold,l.opts.scrollarea==b?(l.$scrollarea=d,l._scrollcontentheight=e.height(),l._scrollwindowheight=c.documentelement.clientheight):(l.$scrollarea=l.opts.scrollarea,l._scrollcontentheight=l.$element[0].scrollheight,l._scrollwindowheight=l.$element.height()),k(l),d.on("resize",function(){cleartimeout(l.timer),l.timer=settimeout(function(){l._scrollwindowheight=l.opts.scrollarea==b?b.innerheight:l.$element.height(),k(l)},150)}),l.$element.on("touchstart",function(a){l.loading||(g(a),h(a,l))}),l.$element.on("touchmove",function(a){l.loading||(g(a,l),i(a,l))}),l.$element.on("touchend",function(){l.loading||j(l)}),l.$scrollarea.on("scroll",function(){l._scrolltop=l.$scrollarea.scrolltop(),""!=l.opts.loaddownfn&&!l.loading&&!l.islockdown&&l._scrollcontentheight-l._threshold<=l._scrollwindowheight+l._scrolltop&&m(l)})},f.prototype.lock=function(a){var b=this;void 0===a?"up"==b.direction?b.islockdown=!0:"down"==b.direction?b.islockup=!0:(b.islockup=!0,b.islockdown=!0):"up"==a?b.islockup=!0:"down"==a&&(b.islockdown=!0,b.direction="up")},f.prototype.unlock=function(){var a=this;a.islockup=!1,a.islockdown=!1,a.direction="up"},f.prototype.nodata=function(a){var b=this;void 0===a||1==a?b.isdata=!1:0==a&&(b.isdata=!0)},f.prototype.resetload=function(){var b=this;"down"==b.direction&&b.upinsertdom?b.$domup.css({height:"0"}).on("webkittransitionend moztransitionend transitionend",function(){b.loading=!1,b.upinsertdom=!1,a(this).remove(),l(b)}):"up"==b.direction&&(b.loading=!1,b.isdata?(b.$domdown.html(b.opts.domdown.domrefresh),l(b),k(b)):b.$domdown.html(b.opts.domdown.domnodata))}}(window.zepto||window.jquery);