2010-02-18 5 views
2

선택 항목에 위치 상대 div가 추가 될 때까지 잘 작동하는 선택 및 끌기 코드가 있습니다. 여기 jQuery 상대적 위치 및 절대 위치로 요소 선택 및 끌기

코드이며, 당신은 단지 마우스 스팬 1, 기간이 및 중첩 된 기간 4

$(function() { 

    var selected = $([]), offset = {top:0, left:0}; 
    $("#selectable1").selectable(); 

    $("#selectable1 span.drag").draggable({ 

     start: function(ev, ui) { 

     selected = $(".ui-selected").each(function() { 
     var el = $(this); 
     el.data("offset", el.offset()); 

     }); 

     offset = $(this).offset(); 

     }, 

     drag: function(ev, ui) { 

     var dt = ui.position.top - offset.top, dl = ui.position.left - offset.left; 

     selected.not(this).each(function() { 
      var el = $(this), off = el.data("offset"); 
      el.css({top: off.top + dt, left: off.left + dl}); 
      }); 

     }, 

    }); 
    }); 

주시기 바랍니다 선택 문제를 확인하려면 http://jsbin.com/azeli/2 에서 작동하는 데모를 볼 수 있습니다 이 문제를 해결할 수 있는지 알고 있습니다. 감사합니다.

답변

0

선택 영역 내의 모든 요소에 대해 절대 위치를 지정하고 선택이 변경되면 원래 위치로 복원하십시오. 루프는 루프

// call the restorePositions() that goes through the array of 
// saved elements, restoring each position and remove the element from the array; 
// if element in the loop has a position thats not relative, add to array 
el.css({position: 'absolute', top: off.top + dt, left: off.left + dl}); 
+0

I가 생각 내부

var originalPositions = new Array(); 

외부

하지만 상대의 텍스트 구분 절대 중첩 스팬 4 명 변경이 간극을 단풍 경우 상대 위치 스팬 였다. – Mircea

+0

현재 왼쪽 및 맨 위를 제거해야한다는 점과 왼쪽 또는 위쪽이없는 것으로 절대 값으로 표시 할 때 동일한 지점에 남아 있으며 드래그 할 수없는 내부 컨테이너가있는 경우 텍스트가 더 잘 작동합니다. 과다. –

+0

저는 jQuery를 처음 사용하고 있습니다. 나는 이것을 아직 풀지 않았지만 그것이 어떻게되는지 알려 줄 것이다. 조언을위한 고맙습니다! – Mircea