2
//generate toolbar
var $toolbar = $(".toolbar");
$.each(tools, function (i, tool) {
    $("<img>", tool).appendTo($toolbar);
});
var $tools = $toolbar.find("img");

//define drag and drop handlers
$toolbar.on("dragstart", "img", onDrag);
$(".canvas").on({
    dragenter: false,
    dragover: false,
    drop: onDrop
});

//handle commencement of drag
function onDrag(e) {
    $o = $(this).clone();
    var o = e.originalEvent;
    o.effectAllowed = "copy";
    os = { X: o.offsetX, Y: o.offsetY };
}

jQuery 文档说 for 的第三个参数.on()是数据,.on()如果第四个参数存在,第四个参数 to 是事件处理程序。在这种情况下onDrag是第三个参数,所以它必须被视为数据?它看起来很像一个事件处理程序,应该声明为第四个参数而不是第三个参数。我可以在这里得到一些解释吗?

4

1 回答 1

2

带方括号的参数是可选的,因此handler如果省略selectorand参数,a 可能是第二个data参数。它足够聪明,可以识别给定的最后一个参数是函数还是函数引用,并将其用作处理程序。

于 2013-10-02T22:05:28.663 回答