2013-07-21 2 views
8

나는 jquery UI sortable로 작업 중입니다. sorting 배열을 drop 이벤트의 처리 파일에 전달하고 싶습니다.Jquery ui sortable drop 이벤트

하나 개 재미있는 것은 내가 http://jsfiddle.net/7Ny9h/

$(function() { 
    $("#sortable").sortable(); 
    $("#sortable").disableSelection(); 

    $("#sortable li").droppable({ 
     drop: function() { 
      var order = $("#sortable").sortable("serialize", {key:'order[]'}); 
      $("p").html(order); 
     } 
    }); 
}); 

내가 BOX 2 호를 이동하는 경우, 상자 2 배열에서 제외되고, 샘플을보고 .. 발견했다.

아마도 "dropend"이벤트의 종류가 필요합니다. jquery UI 드롭 이벤트는 끌어다 놓은 이벤트를 계산하지 않기 때문일 수 있습니다.

답변

19

jQuery UI Sortable stop 이벤트로 문제를 해결할 수 있습니다.

$(function() { 
    $("#sortable").sortable(); 
    $("#sortable").disableSelection(); 

    $("#sortable").sortable({ 
     stop: function() { 
      var order = $("#sortable").sortable("serialize", {key:'order[]'}); 
      $("p").html(order); 
     } 
    }); 
}); 
+0

이 나던 작업 http://jsfiddle.net/Tncg8/ – Prozi

+0

@Prozi, 즉이다. 귀하의 의견에 귀하의 JSfiddle 실제로 "sortable"하나에 "droppable"이벤트를 변경하지 않습니다. 이것이 당신에게 실패한 이유입니다. JSfiddle을 여기에 업데이트했습니다 : http://jsfiddle.net/a94fak79/ – hazrpg

+0

완벽하게 작동하는 매우 간단한 해결책은 @ SoursopTree의 대답을 참조하십시오. –

19

update을 사용하여 감지 할 수도 있습니다. 당신이 잘못하고 있기 때문에

$("#sortable").sortable({ 
     update: function() { 
      // do stuff 
     } 
    }); 
+1

일반적인 "on finish moving"대신에 "성공"유형의 메시지를 수행하려는 경우 'stop'대신에 더 좋은 옵션입니다. – testing123