mirror of
https://github.com/YunoHost-Apps/limesurvey_ynh.git
synced 2024-09-03 19:36:32 +02:00
56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
/*
|
|
bindWithDelay jQuery plugin
|
|
Author: Brian Grinstead
|
|
MIT license: http://www.opensource.org/licenses/mit-license.php
|
|
|
|
http://github.com/bgrins/bindWithDelay
|
|
http://briangrinstead.com/files/bindWithDelay
|
|
|
|
Usage:
|
|
See http://api.jquery.com/bind/
|
|
.bindWithDelay( eventType, [ eventData ], handler(eventObject), timeout, throttle )
|
|
|
|
Examples:
|
|
$("#foo").bindWithDelay("click", function(e) { }, 100);
|
|
$(window).bindWithDelay("resize", { optional: "eventData" }, callback, 1000);
|
|
$(window).bindWithDelay("resize", callback, 1000, true);
|
|
*/
|
|
|
|
(function($) {
|
|
|
|
$.fn.bindWithDelay = function( type, data, fn, timeout, throttle ) {
|
|
|
|
if ( $.isFunction( data ) ) {
|
|
throttle = timeout;
|
|
timeout = fn;
|
|
fn = data;
|
|
data = undefined;
|
|
}
|
|
|
|
// Allow delayed function to be removed with fn in unbind function
|
|
fn.guid = fn.guid || ($.guid && $.guid++);
|
|
|
|
// Bind each separately so that each element has its own delay
|
|
return this.each(function() {
|
|
|
|
var wait = null;
|
|
|
|
function cb() {
|
|
var e = $.extend(true, { }, arguments[0]);
|
|
var ctx = this;
|
|
var throttler = function() {
|
|
wait = null;
|
|
fn.apply(ctx, [e]);
|
|
};
|
|
|
|
if (!throttle) { clearTimeout(wait); wait = null; }
|
|
if (!wait) { wait = setTimeout(throttler, timeout); }
|
|
}
|
|
|
|
cb.guid = fn.guid;
|
|
|
|
$(this).bind(type, data, cb);
|
|
});
|
|
};
|
|
|
|
})(jQuery);
|