javascript - 如何在js中为两个单独的事件触发一个函数?

标签 javascript jquery

我有 2 个事件,一个按键和一个点击。我想将它们放入一个函数中,当调用该函数时,无论触发哪个事件都会执行它应该执行的操作。

示例:

var close = function () {
    $('.alert').remove();
};

$(document).on('keydown', function (event) {
    if (event.keyCode === 27) {
        //27 = ESC
        close();
    }
});

$('.alertBG').on('click', function () {
    close();
});

我想不出一种方法可以让 document.alertBG 部分很好地发挥作用。 (Fiddle)

最佳答案

不要。你们的功能差别太大了。您已经将它们的可重用部分分解到您从两者调用的 close 函数中。这是最好的方法。

<小时/>

如果您确实愿意,那么您必须将 click/keydown 处理程序绑定(bind)到 document 并测试事件和元素的类型。

$(document).on("keydown click", function (event) {
    if (
    (event.type === "keydown" && event.keyCode === 27) || (event.type === "click" && (
    $(event.target).is(".alertBG") || $(event.target).parents(".alertBG").length))) {
        close();
    }
});

正如您所看到的,当事件处理程序之间存在如此多的差异时,单独绑定(bind)事件处理程序会更干净。

关于javascript - 如何在js中为两个单独的事件触发一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31586899/

相关文章:

javascript - 如何在asp.net c#中的服务器端获取XMLHTTPRequest对象

javascript - 如何根据从第一个下拉列表自动更改的第二个下拉列表更改第二个文本框值?

javascript - 如果输入因 jquery 更改事件而更改,则重置总和

javascript - 在从另一个多选 2 框中删除所选项目时,从多选 2 框中删除所选项目

javascript - anchor 标签在页面下方起作用,但不向上

php - 如何在 HTML 上保存民意调查获取和保存民意调查结果

javascript - 使用 karma 运行单元测试时出错

javascript - 在 JS Canvas 动画中为台球物理添加重力

JavaScript 倒计时,添加小时和分钟

javascript - 如何动态设置javascript对象的属性