我正在 jQuery 中使用 .on() 函数为事件分配函数。
var someEvent = getEventName(someParams); // gets the event, like 'click'
var someFunctionReference = getFunctionNameBasedOnParams(someParams); // gets the function reference
$('.myElement').on(someEvent, someFunctionReference);
我想做的是将“someFunctionReference”包装在超时内或延迟其触发(一段时间;假设250毫秒),而不必去修改该方法返回的每个函数。
有办法做到这一点吗?
最佳答案
我假设您无法修改 getFunctionNameBasedOnParams
中的代码,因此您所需要做的就是创建另一个函数,该函数返回包装在计时器中的函数。
function delayFunc(fn, ms) {
return function() {
var args = arguments;
setTimeout(function() {
fn.apply(this, args);
}, isNaN(ms) ? 100 : ms);
}
}
然后将你的函数传递给它。
var someFunctionReference = delayFunc(getFunctionNameBasedOnParams(someParams), 250);
请注意,处理程序的返回值现在毫无意义,因此如果您返回 false
,它将不会产生任何效果。
关于javascript - jQuery - 延迟使用 .on 声明的所有函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31120629/