(function( $ ){
	
	$.fn.clickHold = function( callback ) {
		
		var intervalTimer;
		
		return this.mousedown(function(){
			callback();
			intervalTimer = setInterval(function(){ callback(); }, 100);
		}).bind('mouseup mouseout', function(){
			clearInterval(intervalTimer);
		});
		
	}
	
})( jQuery );
@@ -51,13 +51,31 @@
 back
+, completeCallback
  ) %7B%0A
-
 %09%09%0A%09
@@ -94,16 +94,30 @@
 lTimer;%0A
+%09%09var active;%0A
 %09%09%0A%09%09ret
@@ -143,24 +143,42 @@
 function()%7B%0A
+%09%09%09active = true;%0A
 %09%09%09callback(
@@ -293,37 +293,172 @@
 %0A%09%09%09
-clearInterval(intervalTimer);
+if(active)%0A%09%09%09%7B%0A%09%09%09%09active = false;%0A%09%09%09%09clearInterval(intervalTimer);%0A%09%09%09%09%0A%09%09%09%09if(typeof completeCallback !== 'undefined')%0A%09%09%09%09%7B%0A%09%09%09%09%09completeCallback();%0A%09%09%09%09%7D%0A%09%09%09%7D
 %0A%09%09%7D

Exit bind() being called twice - once on mouseup, again on mouseout so added active flag to prevent double-running Added completeCallback - gets executed on mouseup/mouseout