2010-04-18 3 views
11

삭제 작업 후 일부 데이터를 저장하기 위해 ajax 호출을 수행하려면 sortable.stop()을 호출합니다.JQuery UI 정렬 : 일부 조건을 기반으로 위치 복원

ajax 호출이 오류 (응용 프로그램 논리 오류 또는 그물 문제)를 반환하면 끌어온 요소를 원래/시작 위치로 옮기고 싶습니다. 어떻게 구현할 수 있습니까?

시나리오가 있어야한다

  1. 사용자 A는 sortable.stop() 이벤트가 호출
  2. B로 드래그, 그것은 아약스 호출이 stop() 이벤트 내부 오류
  3. 을 반환
  4. Ajax 호출을 트리거 우리 아약스 오류가 발생합니다.
  5. A를 원래 위치로 이동합니다.
  6. 사용자가 A를 B로 다시 이동합니다.
  7. 모든
  8. A는

단계 6-8을 수행 할 수 있습니다 연속 드래그를 명확히 표시되고 이전 오류가 잊어해야 B에 새 위치에 남아 괜찮습니다.

답변

22

.sortable('cancel')을 살펴보십시오. 이 같은 : - dafi

var list = $('#some-list') 
list.sortable(
{ 
    // Some options. 
    stop: function() 
    { 
     $.post('some-url', someData, function() 
     { 
      if (somethingWentWrong) 
      { 
       list.sortable('cancel'); 
      } 
     }); 
    } 
}); 
+5

stop() 콜백에서 작동하지 않아 stop() 대신 receive()를 사용하고 $ (ui.sender) .sortable ('cancel')으로 취소 된 드롭입니다. – dafi

+0

이것은 나를 위해 일했고 나에게 약간의 번거 로움을 덜어 줬다. @dafi 코드를 사용할 필요는 없었지만 지금은 다행입니다. :) – CommentLuv

6

이 덕분에이 나를 ​​위해 작동합니다

$('#some-list').sortable({ 
    // other options here, 
    receive: function(event, ui) { 

    // ajax or function here 
    if(somethingWentWrong) { 
     $(this).sortable('cancel'); 
     $(ui.sender).sortable('cancel'); 
    } 

    } 

}); 

난 당신이 $(this).sortable('cancel'); 필요하면 모르겠지만, 나는 그것이 소스를 취소하는 것이 가장 좋습니다 파악 대상 정렬 가능 목록 이렇게하면 목록 항목이 즉시 되돌아옵니다. 기타 Sortable options 여기에 있습니다.

0

감사합니다. liveat60fps는 필요한 두 가지 중 두 번째 설명입니다.

$('#some-list').sortable({ 

     // other options here, 
    receive: function(event, ui) { 

    // ajax or function here 
    if(somethingWentWrong) { 
     $(this).sortable('cancel'); 
     $(ui.sender).sortable('cancel'); 
    }  
    }  
}); 

특정 조건에서 이렇게하면 원래 상태로 돌아갈 수 있습니다.

관련 문제