2011-02-27 8 views
21

절대적 공통 정렬 경우 드래깅 취소는 정렬 항목

<script> 
$(function() { 
    $("#sortable").sortable(); 
}); 
</script> 

<ul id="sortable"> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
</ul> 

문제.은 어떤 조건의 항목의 드래그를 취소 할 필요 Andrew Whitaker의 좋은 충고가있다, 그러나 그 접근 방식은 sortables에 대한 JQuery와 - UI - 드래그 만 노력하고 실패 :

$("#sortable").sortable({ 
    start: function() { 
    return false; // will still cause `this.helper is null` 
    } 
}); 

는 제안을 greateful됩니다.

답변

13

sort 기능 콜백 드래그 (demo)에 대한 드래그 등의 종류에 대해 동일한 작업을 수행합니다

$("#sortable").sortable({ 
    sort: function() { 
     if ($(this).hasClass("cancel")) { 
      $(this).sortable("cancel"); 
     } 
    } 
}); 
+0

고맙습니다. 작동하지 않습니다. – mcmlxxxiii

+23

다음과 같은 오류가 발생합니다. "잡히지 않은 TypeError : null의 속성 '0'을 읽을 수 없습니다." –

+0

http://stackoverflow.com/questions/18470835/jquery-sortable-cancel-event-if-not-valid –

26

정렬 가능한은 "취소"기능이 sortable('cancel')를 사용하여 호출이 있습니다.

docs에서 : "현재 정렬의 변경을 취소하고 현재 정렬이 시작되기 전의 상태로 되돌립니다." http://api.jqueryui.com/sortable/#method-cancel을 참조하십시오.

사용 예제 :

$("#sortable").sortable({ 
    stop: function(e, ui) { 
    if ("I need to cancel this") { 
     $(ui.sender).sortable('cancel'); 
    } 
    } 
}); 
+7

'ui .sender'는 한 항목에서 다른 항목으로 이동하는 경우 (sapable/sortable/#eventstop) 항목이 나오는 정렬 식이므로 '보낸 사람'을 사용할 수 없습니다. 그 단일 sortable'$ (this) .sortable ('cancel')' – Odys

+1

을 사용하고 싶다면 @Odys는 그것을 추가해 주셔서 대단히 감사합니다. –

17

동적 unsortable 물건을 만들기위한 좋은 작품을 제안 falsefudgey로 돌아뿐만 아니라, 당신은뿐만 아니라 정적 unsortables을 설정 할 수있는 정렬 설정에 cancel option있다 :

$("#sortable").sortable({ 
    // this prevents all buttons, form fields, and elemens 
    // with the "unsortable" class from being dragged 
    cancel: ":input, button, .unsortable" 
}); 
+0

취소 CSS 클래스가 적용된 요소 아래에 중첩 된 sortable이 있음을 유념하십시오 (예 : 중첩 된 트리 뷰 내에서) 해당 클래스가 적용되지 않은 경우에도 정렬 할 수 없습니다. – Jason

6

시도 this example

 
$('#list1').sortable({ 
    connectWith: 'ul' 
});  

$('#list2').sortable({ 
    connectWith: 'ul', 
    receive: function(ev, ui) { 
     if(ui.item.hasClass("number")) 
      ui.sender.sortable("cancel"); 
    } 
}); 
+0

슈퍼 굉장 .. 반나절 걸리고 오늘의 끝에서 대답이 여기에 – Fury

+0

내가 원하는 것처럼 클래스 이름을 기반으로 훌륭한 구현. – Aries51