1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /**
- * jQuery mousehold plugin - fires an event while the mouse is clicked down.
- * Additionally, the function, when executed, is passed a single
- * argument representing the count of times the event has been fired during
- * this session of the mouse hold.
- *
- * @author Remy Sharp (leftlogic.com)
- * @date 2006-12-15
- * @example $("img").mousehold(200, function(i){ })
- * @desc Repeats firing the passed function while the mouse is clicked down
- *
- * @name mousehold
- * @type jQuery
- * @param Number timeout The frequency to repeat the event in milliseconds
- * @param Function fn A function to execute
- * @cat Plugin
- */
- jQuery.fn.mousehold = function(timeout, f) {
- if (timeout && typeof timeout == 'function') {
- f = timeout;
- timeout = 100;
- }
- if (f && typeof f == 'function') {
- var timer = 0;
- var fireStep = 0;
- return this.each(function() {
- jQuery(this).mousedown(function() {
- fireStep = 1;
- var ctr = 0;
- var t = this;
- timer = setInterval(function() {
- ctr++;
- f.call(t, ctr);
- fireStep = 2;
- }, timeout);
- })
- clearMousehold = function() {
- clearInterval(timer);
- if (fireStep == 1) f.call(this, 1);
- fireStep = 0;
- }
-
- jQuery(this).mouseout(clearMousehold);
- jQuery(this).mouseup(clearMousehold);
- })
- }
- }
|