通过javascript向函数发送事件

时间:2013-12-17 11:02:46

标签: javascript

我想抓住onmousemove的事件并将其发送到mouseMoveOnCanvas函数。

mouseMoveOnCanvas的功能中我试图获得:ev.currentTarget.offsetLeft

我试着做下一件事:

document.getElementById('canvas_1234').onmousemove = (function (ev) {
    if (ev != null) {
        canvas_id = 'canvas_1234';
        return function () {

            mouseMoveOnCanvas(ev);
            //MouseOverColor(currentTd);
        }
    }
})();

ev始终为空。

我知道我可以用jquery做到这一点:

$('canvas[id^="canvas_"]').live('mousemove', function (ev) {..}

但我想用javascript做。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

你不应该这样使用闭包。删除它,它应该工作。

document.getElementById('canvas_1234').onmousemove = function (ev) {
    if (ev != null) {
        canvas_id = 'canvas_1234';
        return function () {

            mouseMoveOnCanvas(ev);
            //MouseOverColor(currentTd);
        }
    }
};

正在发生的事情是闭包是自己调用函数(在加载时)而不是由事件调用。此外,您还没有在参数上传递任何内容 - 像这样:

(function(ev) { console.log(ev); })("Hi");

另一点是,没有理由为什么要归还匿名,因为你没有从中返回任何东西。为什么不呢?

return mouseMoveOnCanvas(ev);