javascript - JQuery 中具有不同事件的多个目标 ID 的相同功能

标签 javascript jquery

我有这个并且它正在工作:

function cancelFunction(targetid,e) {
    if (targetid.substring(0,9) == "editinput") {
        if (e.keyCode != 27) {
            return;
        }
        var target = targetid.substring(10);
    }
    else
        var target = targetid.substring(11);
    // DO OTHER STUFF HERE
}
$(\'[id^=editinput]\').keypress(function(e) {
    var targetid= $(this).attr("id");
    cancelFunction(targetid,e);
});
$(\'[id^=canceledit]\').click(function() {
    var targetid= $(this).attr("id");
    cancelFunction(targetid,"");
});

我想知道是否可以合并keypress事件于 [id^=editinput]click事件于 [id^=canceledit]在一次调用中声明函数?

我的意思是这样的(显然是错误的语法):

$((\'[id^=canceledit]\').click)((\'[id^=editinput]\').keypress)(function(e) {
    var targetid = $(this).attr("id");
    if (targetid.substring(0,9) == "editinput") {
        if (e.keyCode != 27) {
            return;
        }
        var target = targetid.substring(10);
    }
    else
        var target = targetid.substring(11);
    // DO OTHER STUFF HERE
});

最佳答案

最简单的可能是进行一些重构

function cancelFunction(e) {
    if (this.id.substring(0,9) == "editinput") {
        if (e.keyCode != 27) {
            return;
        }
        var target = this.id.substring(10);
    } else {
        var target = this.id.substring(11);
    }
}

$('[id^=editinput]').on('keypress', cancelFunction);
$('[id^=canceledit]').on('click', cancelFunction);

关于javascript - JQuery 中具有不同事件的多个目标 ID 的相同功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27731416/

相关文章:

javascript - 为什么 Javascript 需要匿名函数来延迟执行?

javascript - 从异步或同步 JavaScript 请求返回值

javascript - 基本幻灯片

javascript - 异步生成器在 babel-node 上工作,但在 babel-register 或 build 上失败

javascript - 在 jQuery UI Draggable 中延迟后启动拖动而无需移动鼠标?

javascript - bootstrap modal $(...).modal 不是一个函数

javascript - 使用 jQuery 滚动到一个元素

javascript - TestCafe 未在 headless 和 UI 模式下在 ubuntu 中运行

javascript - Kendo UI Grid 过滤后一次刷新排序

javascript - 如何选择下一个匹配元素?