配色: 字号:
jQuery timers计时器简单应用说明
2016-12-09 | 阅:  转:  |  分享 
  
jQuerytimers计时器简单应用说明



大家都知道jQuery很强大,也有很多效果很帅的插件,下面介绍下jQuery定时器插件jQueryTimers,那JS都自带有定时器,为什么要使用Jquery的呢?



因为方便嘛,Jquery已封装JS的setTimeout和setInterval方法,下面看下应用例子:



复制代码代码如下:





/

jQuery.timers-TimerabstractionsforjQuery

WrittenbyBlairMitchelmore(blairDOTmitchelmoreATgmailDOTcom)

LicensedundertheWTFPL(sam.zoy.org/wtfpl/).

Date:2009/10/16



@authorBlairMitchelmore

@version1.2



/



jQuery.fn.extend({

everyTime:function(interval,label,fn,times){

returnthis.each(function(){

jQuery.timer.add(this,interval,label,fn,times);

});

},

oneTime:function(interval,label,fn){

returnthis.each(function(){

jQuery.timer.add(this,interval,label,fn,1);

});

},

stopTime:function(label,fn){

returnthis.each(function(){

jQuery.timer.remove(this,label,fn);

});

}

});



jQuery.extend({

timer:{

global:[],

guid:1,

dataKey:"jQuery.timer",

regex:/^([0-9]+(?:\.[0-9])?)\s(.s)?$/,

powers:{

//Yeahthisismajoroverkill...

''ms'':1,

''cs'':10,

''ds'':100,

''s'':1000,

''das'':10000,

''hs'':100000,

''ks'':1000000

},

timeParse:function(value){

if(value==undefined||value==null)

returnnull;

varresult=this.regex.exec(jQuery.trim(value.toString()));

if(result[2]){

varnum=parseFloat(result[1]);

varmult=this.powers[result[2]]||1;

returnnummult;

}else{

returnvalue;

}

},

add:function(element,interval,label,fn,times){

varcounter=0;



if(jQuery.isFunction(label)){

if(!times)

times=fn;

fn=label;

label=interval;

}



interval=jQuery.timer.timeParse(interval);



if(typeofinterval!=''number''||isNaN(interval)||interval<0)

return;



if(typeoftimes!=''number''||isNaN(times)||times<0)

times=0;



times=times||0;



vartimers=jQuery.data(element,this.dataKey)||jQuery.data(element,this.www.hunanwang.netdataKey,{});



if(!timers[label])

timers[label]={};



fn.timerID=fn.timerID||this.guid++;



varhandler=function(){

if((++counter>times&×!==0)||fn.call(element,counter)===false)

jQuery.timer.remove(element,label,fn);

};



handler.timerID=fn.timerID;



if(!timers[label][fn.timerID])

timers[label][fn.timerID]=window.setInterval(handler,interval);



this.global.push(element);



},

remove:function(element,label,fn){

vartimers=jQuery.data(element,this.dataKey),ret;



if(timers){



if(!label){

for(labelintimers)

this.remove(element,label,fn);

}elseif(timers[label]){

if(fn){

if(fn.timerID){

window.clearInterval(timers[label][fn.timerID]);

deletetimers[label][fn.timerID];

}

}else{

for(varfnintimers[label]){

window.clearInterval(timers[label][fn]);

deletetimers[label][fn];

}

}



for(retintimers[label])break;

if(!ret){

ret=null;

deletetimers[label];

}

}



for(retintimers)break;

if(!ret)

jQuery.removeData(element,this.dataKey);

}

}

}

});



jQuery(window).bind("unload",function(){

jQuery.each(jQuery.timer.global,function(index,item){

jQuery.timer.remove(item);

});

});





JSCode



复制代码代码如下:





$("#close-button").click(function(){

$(this).oneTime(1000,function(){

$(this).parent(".main-window").www.visa158.comhide();

});

});

$("#cancel-button").click(function(){

$("#close-button").stopTime();

});





jQueryTimers插件地址:

plugins.jquery/project/timers



下面来自JavaEye论坛的JQueryTimers应用知识



提供了三个函式

1.everyTime(时间间隔,[计时器名称],函式名称,[次数限制],[等待函式程序完成])

2.oneTime(时间间隔,[计时器名称],呼叫的函式)

3.stopTime([计时器名称],[函式名称])



复制代码代码如下:





/

everyTime(时间间隔,[计时器名称],函式名称,[次数限制],[等待函式程序完成])

/



//每1秒执行函式test()

functiontest(){

//dosomething...

}

$(''body'').everyTime(''1s'',test);



//每1秒执行

$(''body'').everyTime(''1s'',function(){

//dosomething...

});



//每1秒执行,并命名计时器名称为A

$(''body'').everyTime(''1s'',''A'',function(){

//dosomething...

});



//每20秒执行,最多5次,并命名计时器名称为B

$(''body'').everyTime(''2das'',''B'',function(){

//dosomething...

},5);



//每20秒执行,无限次,并命名计时器名称为C

//若时间间隔抵到,但函式程序仍未完成则需等待执行函式完成后再继续计时

$(''body'').everyTime(''2das'',''C'',function(){

//执行一个会超过20秒以上的程式

},0,true);



/

oneTime(时间间隔,[计时器名称],呼叫的函式)

/

//倒数10秒后执行

$(''body'').oneTime(''1das'',function(){

//dosomething...

});



//倒数100秒后执行,并命名计时器名称为D

$(''body'').oneTime(''1hs'',''D'',function(){

//dosomething...

});



/

stopTime([计时器名称],[函式名称])

/

//停止所有的在$(''body'')上计时器

$(''body'').stopTime();



//停止$(''body'')上名称为A的计时器

$(''body'').stopTime(''A'');



//停止$(''body'')上所有呼叫test()的计时器

$(''body'').stopTime(test);





自定义时间单位

打开源代码

找到



复制代码代码如下:





powers:{

//Yeahthisismajoroverkill...

''ms'':1,

''cs'':10,

''ds'':100,

''s'':1000,

''das'':10000,

''hs'':100000,

''ks'':1000000

}





可以定制自己想要的了!





















献花(0)
+1
(本文系白狐一梦首藏)