2011-03-26 3 views
0

overflow : auto가있는 페이지에 여러 개의 div가 있고 많은 것은 보이는 영역에 적합하지 않습니다. 한 div에서 다른 div로 드래그 앤 드롭 할 때 대상 div 위의 div에 긴 목록이 있으면 $ (this)는 내 항목이있는 div가 아닌 해당 div의 ID를 반환합니다. 시각적으로 그리고 수정 된 html로 잘 작동하지만 div에 착륙 한 곳의 ID를 알아낼 수 있어야합니다. 해결 방법이 있어야하는 것처럼 보입니다. ???

제 목표는 수신 div의 ID를 안정적으로 얻는 것입니다. 드롭 이벤트가 발생할 때까지 위치는 변경되지 않았습니다. 어쩌면 그것은 'sortable'클래스를 사용하는 대신 역순으로 id로 각 divable div를 초기화 할 수 있지만 그 중 10 개 또는 15 개가있을 수 있으며 너무 서투른 것처럼 보일 수 있습니다.

$(".sortable").sortable({ 
     connectWith : ['.sortable'], 
     dropOnEmpty : true, 
     placeholder : "ui-state-highlight", 
     revert: true, 
     start : function(event, ui) { 
      getEquip($(ui.item).attr('id').slice(8)); 
     } 
    }); 
    $(".sortable").draggable({ 
     helper: "clone", 
     revert: "invalid" 
    }); 
    $(".sortable").droppable({ 
     greedy : true, 
     drop: function(event, ui) { 
      var msg = 'Moved ' + $(ui.draggable).text() + ', id#' + $(ui.draggable).attr('id').slice(8) + ' to'; 
      msg += ' ' + $(this).attr('id'); //<<== gives wrong id if list above is long 
      msg += ' ' + $('#' + $(ui.draggable).attr('id')).parent().attr('id'); 
      writeFooter(msg);//Moved hydrant wrenches, id#164 to sortable16 sortable22 
     }, 
    }); 
+0

당신이 옵션'욕심을 추가나요은? 우리가 당신을 도울 수 있도록 약간의 코드를 제공하십시오 – rsplak

+0

답장을 보내 주셔서 감사합니다! 나는 성공하지 못한 채 욕심이 많았고 위의 코드를 추가했다. –

답변

0

해결 방법을 찾았습니다

여기 (: 사실 욕심 시도 후) 내 초기화 코드입니다. 아래쪽에서부터 ID별로, 즉 역순으로 삭제 가능한 div를 초기화하면 문제가 사라집니다. 이전에는 클래스별로 초기화했습니다. 수정 된 코드는 다음과 같습니다 여기서 subloc [I-1] [0] sublocation의 ID 번호입니다 : 당신의 낙하 할에 TRUE ':

for (var i = subloc.length; i > 0; i--) { //init droppables backwards to overcome overflow bug 
     $("#sortable" + subloc[i-1][0]).droppable({ 
      tolerance : 'intersect', 
      drop: function(event, ui) {...