//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文档说.on()
的第三个参数是数据,如果第四个参数存在,.on()
的第四个参数是一个事件处理程序。在这种情况下,onDrag
是第三个参数,因此必须将其视为数据?它看起来非常像一个事件处理程序,它应该被声明为第四个参数而不是第三个参数。我可以在这里得到一些解释吗?
答案 0 :(得分:2)
带方括号的参数是可选的,因此如果省略handler
和selector
参数,data
可能是第二个参数。它足够聪明,可以识别给定的最后一个参数是函数还是函数引用,并将其用作处理程序。