2013-10-02 3 views
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?

+2

onDrag는 함수이므로 콜백으로 사용됩니다. API에서 선택적 매개 변수는 생략 할 수 있음을 의미하는 []로 묶습니다. –

+2

jQuery는 유형을보고 생략 한 매개 변수를 확인합니다. 따라서 매개 변수 3이 객체이면 데이터입니다. 그것이 함수라면 그것은 핸들러입니다. – Barmar

답변

2

대괄호가있는 매개 변수는 선택 사항이므로 selectordata 매개 변수를 생략하면 handler이 두 번째 매개 변수가 될 수 있습니다. 주어진 마지막 매개 변수가 함수 또는 함수 참조인지 여부를 인식하는 것이 현명한 방법이며이를 처리기로 사용합니다.

+0

게시 주셔서 감사합니다. 그것은 대괄호에 대한 아주 좋은 것입니다. – Giuseppe

관련 문제