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

Same function for multiple target IDs with different event in 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,"");
});

我想知道是否可以在单次调用中合并 [id^=editinput] 上的 keypress 事件和 [id^=canceledit] 上的 click 事件,之后声明函数?

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

$((\'[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);