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的文檔說爲.on()
第三個參數是數據和所述第四參數.on()
是事件處理程序,如果第四參數存在。在這種情況下,onDrag
是第三個參數,所以它必須被視爲數據?它看起來非常像一個事件處理程序,它應該被聲明爲第四個參數而不是第三個參數。我能在這裏得到一些解釋嗎?jQuery .on數據或事件處理程序?
由於onDrag是一個函數,它將被用作回調函數。在api中,可選參數包含在[]中,意味着它們可以省略。 –
jQuery通過查看類型來判斷您省略了哪些參數。所以如果參數3是一個對象,它就是數據;如果它是一個函數,它是處理程序。 – Barmar