Javascript 将两个操作绑定到同一事件

Javascript 将两个操作绑定到同一事件,javascript,jquery,html,javascript-events,Javascript,Jquery,Html,Javascript Events,我想把两件事结合起来 现在我的设置是将所有需要的鼠标动作绑定到画布上,然后调用一个包装函数,使鼠标位置相对于画布。然后,包装器函数在内部函数中调用正确的操作。我还想绑定touchstarttouchmove和touchend 这是我所拥有的一个示例结构 $('canvas').bind('mousedown mousemove mouseup', ev_canvas); function ev_canvas (e) { var pos = findPos(this); e._x

我想把两件事结合起来

现在我的设置是将所有需要的鼠标动作绑定到画布上,然后调用一个包装函数,使鼠标位置相对于画布。然后,包装器函数在内部函数中调用正确的操作。我还想绑定
touchstart
touchmove
touchend

这是我所拥有的一个示例结构

$('canvas').bind('mousedown mousemove mouseup', ev_canvas);
function ev_canvas (e) {
    var pos = findPos(this);
    e._x = e.pageX - pos.x;
    e._y = e.pageY - pos.y;

    var func = tool[e.type];
    if (func) {
        func(e);
    }
}

tools.pen = function () {
    tool.mousedown = function (e) {
        //Stuff to do
    };

    tool.mousemove = function (e) {
        //Stuff to do
    };

    tool.mouseup = function (e) {
        //Stuff to do
    };
}
这将调用正确的工具,然后根据操作调用鼠标(向上|向下|移动)功能


有没有一种方法可以将触摸动作绑定到这些动作,这样它就可以调用其中一个动作,而无需复制和粘贴一堆代码?

我会创建一个映射表-eventName:callbackName。这是一个样本

var functionMappings = { 
   mousemove: "mousemove",
   touchmove: "mousemove",
   mousedown: "mousedown",
   touchstart: "mousedown",
   mouseup: "mouseup",
   touchend: "mouseup"
};

var func = tool[functionMappings[e.type]];

if (func) {
   func(e);
}

我将创建一个映射表-eventName:callbackName。这是一个样本

var functionMappings = { 
   mousemove: "mousemove",
   touchmove: "mousemove",
   mousedown: "mousedown",
   touchstart: "mousedown",
   mouseup: "mouseup",
   touchend: "mouseup"
};

var func = tool[functionMappings[e.type]];

if (func) {
   func(e);
}