forked from patryk/jquery.timers
-
Notifications
You must be signed in to change notification settings - Fork 1
/
jquery.timers.min.js
1 lines (1 loc) · 1.91 KB
/
jquery.timers.min.js
1
jQuery.fn.extend({everyTime:function(e,t,n,r){return this.each(function(){jQuery.timer.add(this,e,t,n,r)})},oneTime:function(e,t,n){return this.each(function(){jQuery.timer.add(this,e,t,n,1)})},stopTime:function(e,t){return this.each(function(){jQuery.timer.remove(this,e,t)})},hasTime:function(e){for(var t=0;t<jQuery(this).size();t++){if(jQuery.timer.has(jQuery(this).eq(t).get(0),e)){return true}}return false}});jQuery.extend({timer:{global:[],guid:1,dataKey:"jQuery.timer",regex:/^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,powers:{ms:1,cs:10,ds:100,s:1e3,das:1e4,hs:1e5,ks:1e6},timeParse:function(e){if(e==undefined||e==null){return null}var t=this.regex.exec(jQuery.trim(e.toString()));if(t[2]){var n=parseFloat(t[1]);var r=this.powers[t[2]]||1;return n*r}else{return e}},has:function(e,t){var n=jQuery.data(e,this.dataKey);if(!n){return false}if(!t){if(Object.keys(n).length){return true}return false}if(typeof n[t]==="undefined"){return false}return true},add:function(e,t,n,r,i){var s=0;if(jQuery.isFunction(n)){if(!i){i=r}r=n;n=t}t=jQuery.timer.timeParse(t);if(typeof t!="number"||isNaN(t)||t<0){return}if(typeof i!="number"||isNaN(i)||i<0){i=0}i=i||0;var o=jQuery.data(e,this.dataKey)||jQuery.data(e,this.dataKey,{});if(!o[n]){o[n]={}}r.timerID=r.timerID||this.guid++;var u=function(){if(++s>i&&i!==0||r.call(e,s)===false){jQuery.timer.remove(e,n,r)}};u.timerID=r.timerID;if(!o[n][r.timerID]){o[n][r.timerID]=window.setInterval(u,t)}this.global.push(e)},remove:function(e,t,n){var r=jQuery.data(e,this.dataKey),i;if(r){if(!t){for(t in r){this.remove(e,t,n)}}else if(r[t]){if(n){if(n.timerID){window.clearInterval(r[t][n.timerID]);delete r[t][n.timerID]}}else{for(var n in r[t]){window.clearInterval(r[t][n]);delete r[t][n]}}for(i in r[t]){break}if(!i){i=null;delete r[t]}}for(i in r){break}if(!i){jQuery.removeData(e,this.dataKey)}}}}});jQuery(window).bind("unload",function(){jQuery.each(jQuery.timer.global,function(e,t){jQuery.timer.remove(t)})})