javascript - jQuery - 延迟使用 .on 声明的所有函数调用

标签 javascript jquery

我正在 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/

相关文章:

javascript - 如何使用javascript删除http header 引用信息(由浏览器保存)?

javascript - 如何使用 onclick 函数更改 ejs 变量

javascript - setInterval 更改函数参数

javascript - 视频海报上的事件已加载

javascript - 如何使用 jquery 显示子菜单?

javascript - 如何使用 Handsontable 根据另一个自动完成单元格更新单元格

php - 使用PHP每秒更改网页中的图片

javascript - 带有 Angular 和 node.js 的 JSON

javascript - 在暂停打字期间自动将输入框保存到数据库?

javascript - 大型同位素画廊非常慢