2011-04-06 6 views
0

드래그 & Drop with jQuery에 문제가 있습니다. 내 코드에는 draggable div가있다. 특정 droppable 테이블 셀로 이동하면 div 셀의 복제본이 테이블 셀에 추가됩니다. 하지만 복제본을 드래그하면 원본 div가 대신 이동됩니다. 다음은 드롭 할 때 호출되는 함수입니다.jQuery 드래그 앤 드롭 : 복제 된 드래그 가능 이동 원래

인터넷 검색으로 명확한 답을 찾을 수 없습니다. 나는이 일과 관련이 있는지 모르지만 div는 상대적인 지위를 가지고있다.

복제본을 원래대로 드래그 할 수 있도록하려면 어떻게해야합니까?

+1

원본 요소와 함께'id' 속성을 복제 할 수 있습니까? 이것은 이상한 문제를 야기 할 가능성이 큽니다. –

+0

@Andrew : 네, 그걸로 복제되었지만, 드래그 가능한 ID 속성은 필요 없습니다. 나는 사용자 정의 속성 ('[drag = article]')을 기반으로 다른 jquery 선택기를 사용합니다. – RemiX

답변

2

이것이 내가하는 방법이며,이 트릭을 수행해야합니다.

$(".draggable").draggable({ helper: 'clone' }); 
$(".droppable").droppable({ 
    drop: function (event, ui) { 
     ui.draggable.clone().appendTo($(this)).draggable(); 
    } 
}); 

난 당신이 그랬다면 모르겠지만, 드래그에 ID-S를 사용하지 않는 이들도 복제 할 예정 원인이된다. 또한 드래그 가능한 요소를 적용하기 전에 요소를 추가해야합니다.

+0

감사! 그거야. 아마도 큰 차이점은 복제본에서 appendTo를 사용하는 대신 appendTo를 복제본에서 사용하는 것입니다. 또한 복제물에 드래그 가능한 속성을 복제하는 방법이 있습니까? 왜냐하면 이제 새로운 draggable은 도우미가 없기 때문에 하드 코딩을 원하지 않습니다. – RemiX

+0

그 의견에 대한 내 대답을 찾았습니다 : ui.draggable.draggable ('option')은 현재 드래그 가능한 모든 옵션을 복사합니다. – RemiX

0

Helper Option을 보셨습니까?

+0

예, 저는 도우미를 사용했습니다 : 'clone'하지만 드래그하는 것이 아니라 떨어 뜨렸을 때 실제 요소를 복제하는 것이 었습니다. – RemiX

1

false를 .clone()에 전달하려고 시도한 적이 있습니까? 그 bool은 withDataAndEvents를 나타내므로 이전 객체에도 연결된 모든 동일한 이벤트를 상속합니다.

편집 : 다른 이유로 인해 DataAndEvents가 필요한 경우 복제를 수행하기 전에 원본에서 draggable ("destroy")을 사용해 볼 수 있습니다. 그런 다음 다시 드래그 할 수 있습니까? 가장 우아한 것은 아니지만 작동합니다. http://jsfiddle.net/GheD5/

+0

예 복제 메서드에서 false를 사용하려고했지만 하위 요소와 속성이 동일해야 사용할 수 있습니다. 내일 편집 한 발언을 할께. 고마워. – RemiX

0

전체 코드를 표시 할 수 있습니까? 지금 추측하고 있지만 'delegate()'를 사용하면 http://api.jquery.com/delegate/이 솔루션의 핵심이 될 수 있습니다.

+0

저는 지금 대리인을 어떻게 사용해야하는지 모르겠지만, 저는 이미 rucsi에게 해결책을 제공해주었습니다. 하지만 고마워. – RemiX

1
그렇지 않으면 당신이 드래그 작업을 완료 곳 바로 왼쪽됩니다 원래 항목을 끌고 helper: "clone"

$("selector").draggable({ 
     ... 
     helper: "clone", 
     ... 
}); 

을 포함하도록 draggable 초기화 코드를 변경

.

+0

그래, 그거야. 복제본을 드래그하면 원본이 시작 위치에서 드래그됩니다. – RemiX