README.md0000644000175000017500000000202112470034324011657 0ustar reazemreazem# jQuery Timer Basically setTimeout with more options. View demo: [http://jchavannes.com/jquery-timer/demo](http://jchavannes.com/jquery-timer/demo) Download: [http://jchavannes.com/download/jquery-timer-demo.zip](http://jchavannes.com/download/jquery-timer-demo.zip) --- ## $.timer() #### $.timer( [ action ] , [ time ], [ autostart ] ) * **action** A Function to be called by the timer. * **time A Number** determining how long between actions in milliseconds. * **autostart** A Boolean indicating whether to start the timer. Defaults to false. --- ## Usage ``` var timer = $.timer(function() { alert('This message was sent by a timer.'); }); timer.set({ time : 5000, autostart : true }); ``` ``` timer.set(options); timer.play(reset); // Boolean. Defaults to false. timer.pause(); timer.stop(); // Pause and resets timer.toggle(reset); // Boolean. Defaults to false. timer.once(time); // Number. Defaults to 0. timer.isActive // Returns true if timer is running timer.remaining // Remaining time when paused ``` demo.html0000755000175000017500000000777712470034324012244 0ustar reazemreazem jQuery Timer Demo

jQuery Timer Demo

Project home: http://jchavannes.com/jquery-timer

View Source


Example 1 - Stopwatch (counts ups)

00:00:00



Example 2 - Countdown Timer

05:00:00

Example 3 - Slideshow (preserves time remaining when paused)



Example 4 - The Basics (just a suped-up version of setTimeout)

timer has been executed 0 times.











var count = 0;
var timer = $.timer(function() {
    $('#counter').html(++count);
});
timer.set({ time : 1000, autostart : true });
jquery.timer.js0000644000175000017500000000666112470034324013412 0ustar reazemreazem/** * jquery.timer.js * * Copyright (c) 2011 Jason Chavannes * * http://jchavannes.com/jquery-timer * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ ;(function($) { $.timer = function(func, time, autostart) { this.set = function(func, time, autostart) { this.init = true; if(typeof func == 'object') { var paramList = ['autostart', 'time']; for(var arg in paramList) {if(func[paramList[arg]] != undefined) {eval(paramList[arg] + " = func[paramList[arg]]");}}; func = func.action; } if(typeof func == 'function') {this.action = func;} if(!isNaN(time)) {this.intervalTime = time;} if(autostart && !this.isActive) { this.isActive = true; this.setTimer(); } return this; }; this.once = function(time) { var timer = this; if(isNaN(time)) {time = 0;} window.setTimeout(function() {timer.action();}, time); return this; }; this.play = function(reset) { if(!this.isActive) { if(reset) {this.setTimer();} else {this.setTimer(this.remaining);} this.isActive = true; } return this; }; this.pause = function() { if(this.isActive) { this.isActive = false; this.remaining -= new Date() - this.last; this.clearTimer(); } return this; }; this.stop = function() { this.isActive = false; this.remaining = this.intervalTime; this.clearTimer(); return this; }; this.toggle = function(reset) { if(this.isActive) {this.pause();} else if(reset) {this.play(true);} else {this.play();} return this; }; this.reset = function() { this.isActive = false; this.play(true); return this; }; this.clearTimer = function() { window.clearTimeout(this.timeoutObject); }; this.setTimer = function(time) { var timer = this; if(typeof this.action != 'function') {return;} if(isNaN(time)) {time = this.intervalTime;} this.remaining = time; this.last = new Date(); this.clearTimer(); this.timeoutObject = window.setTimeout(function() {timer.go();}, time); }; this.go = function() { if(this.isActive) { try { this.action(); } finally { this.setTimer(); } } }; if(this.init) { return new $.timer(func, time, autostart); } else { this.set(func, time, autostart); return this; } }; })(jQuery);