2010-07-06 1 views
14

나는 드롭 이벤트 핸들러와 낙하 할이 : 내가 가지고있는실제로 드래그 앤 드롭하지 않고 jQuery UI Droppable을 사용하여 Drop 이벤트를 트리거하는 방법은 무엇입니까?

$(this).droppable({ 
    drop:function(){ 
    console.log('OMG You Dropped It!'); 
    } 
}); 

드래그 :

$(this).draggable(); 

내가하고 싶은 것은 낙하 할의 드롭 이벤트 핸들러를 트리거입니다드래그 가능을 실제로 드래그 앤 드롭하지 않아야합니다. 물리적으로 동작을 수행하지 않고 실제 동작을 시뮬레이트하고 싶습니다.

나는 이런 식으로 뭔가를 할 것이라고 생각 :

$(droppable).trigger('drop', [draggable]); 

불행하게도, 그것은 아주 간단하지 않습니다. 아무도 내가 이것을 성취 할 수있는 방법을 알고 있습니까?

+0

http://stackoverflow.com/a/29284621/278405?programmatically- 끌어서 놓기 요소가있는 요소 – cychoi

답변

11

drop 처리기의 코드를 별도의 기능으로 옮겨야합니다.
그러면 핸들러와 다른 곳에서 함수를 호출 할 수 있습니다. 낙하 할에 뭔가를 포기하는 경우 일 것입니다 당신이 무엇을 얻을

$("#droppable").droppable({ 
     drop: function(event, ui) { 
      do stuff } 
    }); 
var drop_function = $("#droppable").droppable.option('drop'); 
drop_function(); 

이 방법 :

+1

위 코드는 단순화 된 샘플 코드로서 * 코드가 아니라 원하는 것을 보여줍니다. 어쨌든이 문제는 어떻게 해결됩니까? – Kappers

+0

이벤트를 트리거하는 대신 함수를 호출 할 수 있습니다. – SLaks

+3

http://snipplr.com/view/24431/ @Slaks가 의미하는 것의 예입니다. =) – Roylee

9

당신은 옵션-방법을 통해 드롭 통화와 관련된 기능을 트리거 할 수 있습니다. 물론 함수를 할당하는 대신에 함수를 실행할 수 있습니다. 그럼에도 불구하고 명확하게하기 위해 다른 곳에 정의하는 드롭 기능을 할당하는 것이 좋습니다. 당신이해야 jQuery를의 최신 버전으로, ajmurmann의 대답에 StuperUser에 의해 지적하고 기반으로

+2

QUnit 테스트 도중 (예 :) 원래 함수 정의의 범위를 벗어나 호출 할 수있는 경우 +1. – StuperUser

+4

새로운 구문은 $ ("# droppable") .dropppable ('option', 'drop')입니다. – StuperUser

+0

@StuperUser 나는 그것을 얻지 않는다. $ ("# droppable")은 어떤 요소가 드래그 앤 드롭되었는지 어떻게 알 수 있습니까? – adardesign

1

:

$("#droppable").droppable({ 
    drop: function(event, ui) { 
     do stuff } 
}); 
var drop_function = $("#droppable").droppable('option', 'drop'); 
drop_function(); 
관련 문제