将两个动作绑定到同一事件

时间:2011-04-03 06:52:39

标签: javascript jquery html5 javascript-events

我想将两个事件绑定在一起。

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

以下是我所拥有的示例结构

$('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
    };
}

这会调用正确的工具,然后根据操作调用鼠标(向上|向下|移动)功能。

有没有办法将触摸操作绑定到那些,以便它可以调用一个或另一个没有复制并粘贴一堆代码?

1 个答案:

答案 0 :(得分:4)

我会创建一个映射表 - 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);
}