2012-05-16 3 views
11

동적으로 항목을 추가하는 목록의 드래그 가능/정렬 가능한 목록이 있지만 문제는 항목이 추가 된 후에는 이동할 수 없다는 것입니다 새 목록에 추가하십시오. 여기에 기능을 볼 수 있습니다 : http://jsfiddle.net/Y4T32/2/jQuery UI 드래그 가능/정렬 가능 - 동적으로 추가 된 항목을 드래그 할 수 없음

사용 가능한 목록에서 항목을 대상 목록 중 하나로 드래그하면 의미한다는 것을 알 수 있습니다. 이제 "설명 선"을 추가하고 새 항목을 대상 열 중 하나로 드래그 해보십시오.

내가 원하는대로 작동하지만 결과를 재현 할 수없는 또 다른 대답을 발견했습니다 (물론 지금은 답변을 찾을 수 없습니다). 내가 여기서 뭘 잘못하고 있는지에 대한 통찰력?

+0

내가 [이 답변] 발견 (http://stackoverflow.com/questions/2583883/how-to-auto-apply-drag : 여기

작동합니다 일부 JS의 drop-effect-to-dynamic-added-element)를 수정하고 약간 수정했습니다. 그러나 이것이이 문제를 해결하는 가장 좋은 방법이 아닐 수도 있습니다. 나는 바이올린을 업데이트했다. http://jsfiddle.net/Y4T32/7/ –

답변

18

업데이트] 답변

당신이 추가됩니다 각 요소에 대해 .draggable()를 호출해야합니다. 초기화시 사용하는 jQuery 선택기는 현재 생성 된 요소에만 적용되며 작성하는 요소에는 적용되지 않습니다.

var draggable_opts = { 
      connectToSortable: ".sph-callout-portlet", 
      helper: "clone", 
      opacity: 0.75, 
      revert: 'invalid', 
      stop: function(event, ui) { 
       //alert(ui) 
      } 
     }; 

$(function() { 
    $(".sph-callout-portlet").sortable({ 
     opacity: 0.75, 
     placeholder: "ui-state-highlight", 
    }).disableSelection(); 

    $("#sph-callout-portlet-avail li").draggable(draggable_opts); 

    $(document).on("click",'#addNewCo',function(e){ 
     e.preventDefault(); 
     var newCo = $('<li>New Callout</li>').draggable(draggable_opts); 
     $('#sph-callout-portlet-avail').append(newCo); 
    }); 
});​ 

http://jsfiddle.net/SGevw/

+1

jsFiddle에 액세스 할 수없는 경우에 대비하여 여기에 코드를 게시하는 것이 좋습니다. 또한, 당신이 한 일에 대한 설명은 플러스입니다. – j08691

+1

@ j08691, 완료. 머리를 주셔서 감사합니다! – ubik

+0

@ PedroFerreira, 사용자가 원하는 열에 매우 가깝습니다. 단, 사용자가 열 사이를 드래그하거나 사용 가능한 열로 되돌릴 수 없도록하고 싶지는 않습니다. 그래서 다른 클래스 이름을 부여했습니다. –

관련 문제