/** * 居于touch.js下屏幕滚动操作的 */ (function ($) { function rockclass(element, options){ var me = this; var opts = $.extend({ ondragstart:function(){}, ondrag:function(){}, ondragrlend:function(){}, ondragrl:function(){}, scrollbool:false, dropdown_bgcolor:'#f1f1f1', //下拉背景色 dropdown_success:function(){} //下拉回调 }, options); var obj = element; this._init=function(){ this.rand = js.getrand(); this.reloadbo = false; this.mobj = $(obj); for(var a in opts)this[a]=opts[a]; touch.on(obj, 'dragstart', function(e){ me._dragstart(e); }); touch.on(obj, 'drag', function(e){ e.preventDefault() me._drag(e); }); touch.on(obj, 'dragend', function(e){ me._dragend(e); }); }; this._dragstart=function(e){ if(this.reloadbo)return; this.startarr = [e.distanceX, e.distanceY, this.mobj.scrollTop(), e.timeStamp]; this.mobj.stop(); this.ondragstart(e); }; this._drag=function(e){ if(this.reloadbo)return; var lx = e.direction; if(lx=='right' || lx=='left'){ this._dragrightleft(e) return; } this.upheight = 0; if(this.scrollbool){ clearTimeout(this._hidescrollstime); var hei = e.distanceY-this.startarr[1]; var lef = this.startarr[2]-hei; if(lef<0)lef=0; this.mobj.scrollTop(lef); if(lef==0 && hei>0 && this.startarr[2]==0)this._upstart(hei,e);//继续下拉刷新 } this.ondrag(e); }; this._dragrightleft=function(e){ var yd = e.distanceX-this.startarr[0]; this.ondragrl(yd,e); }; this._upstart=function(hei){ if(this.reloadbo)return; hei = hei*0.5; this.upheight = hei; if(hei>200)return; var sid = 'updowns_'+this.rand+''; $('#'+sid+'').remove(); var tx= '↓ 下拉刷新'; if(hei>50)tx='↑ 释放立即刷新'; var s = '
刷新中...');
me.dropdown_success(e);
});
}else{
$('#'+sid+'').slideUp(200);
}
}
};
this._dragrightleftend=function(e){
var yd = e.distanceX-this.startarr[0];
this.ondragrlend(yd,e);
};
this.dropdown_ok=function(ts){
this.reloadbo = false;
var o1 = $('#updowns_'+this.rand+'');
if(!ts)ts='√ 刷新成功';
o1.html(ts);
setTimeout(function(){o1.slideUp(200,function(){o1.remove();});}, 500);
};
this.scroll = function(){
this.scrollbool = true;
this.mobj.css('overflow','hidden');
var off = this.mobj.offset();
this.scrollsid = 'scrolllists_'+this.rand+'';
var l = off.left+this.mobj.width()-6;
var s = '';
s='