2013-03-17 1 views
6

$('div.something').sortable(options)은 정상적으로 작동하지만 $('div.something').unbind(); 이후에 중단됩니다. $('div.something').sortable(options); 또는 $('div.something').sortable('refresh');$('div.something').unbind(); 이후에 다시 실행하면 도움이되지 않습니다.

플러그인을 적용중인 요소에서 이벤트를 제거하여 $ .unbind를 사용하여 플러그인을 비활성화/해제하지만이 기술은 $ .sortable을 깨뜨리는 부작용이 있습니다. 정렬 방식을 다시 활성화하는 방법에 대한 아이디어가 있으십니까?

jQuery 및 jQuery UI의 최신 버전을 사용하고 있습니다.

+0

정확히 어떤 것을 비활성화 하시겠습니까? 모든 이벤트 처리기를 바인딩 해제하라는 호출은 바인딩 작업을 포기하기 때문에 다소 위험한 작업입니다. –

+0

@RubenInfante 너무 많은 것들을 수행하는 플러그인 (많은 jQuery 코드 + 백본)의 바인딩을 해제하고 있기 때문에 "파괴"코드를 작성하고 해당 코드를 적절하게 제거하는 것이 복잡합니다. 다른 이벤트는 클릭 연결 해제 후 잘 작동하지만 정렬 가능하면 문제가 발생합니다. – Steve

+0

'sortable' 플러그인을 사용하지 않거나 요소의 모든 이벤트를 비활성화 시키길 원하십니까 –

답변

8

합니다.

이렇게하면 .unbind()이라는 다소 위험한 호출을 수행하기 전에 적절한 분해 작업을 수행 할 수 있습니다.이 호출은 요소에 바인딩 된 모든 핸들러를 제거합니다. 그런 다음 정렬 가능한 기능을 다시 초기화 할 수 있습니다.

// Initialization of the sortable feature 
$('div.something').sortable(options); 
... 
// Remove the sortable feature to prevent bad state caused by unbinding all 
$('div.something').sortable('destroy'); 
// Unbind all event handlers! 
$('div.something').unbind(); 
... 
// Re-initialize the sortable feature 
$('div.something').sortable(options); 
+0

.sortable ('파괴')는 대단합니다. 그것을 찾기 위해 나를 데려 갔다 :) – user3311522

7

당신은 내가

$('div.something').sortable(options)//Activate 
.... 
$('div.something').sortable('destroy')//Remove the plugin functionality 
.... 
$('div.something').sortable(options)//Reactivate 

데모 destroy 방법을 사용 하시길 권장합니다 sortable 플러그인 비활성화하려면 : 이전에 완전히 요소에서 정렬 기능을 제거합니다 .unbind()를 호출하기 .sortable('destroy')에 전화 걸기 Fiddle

+0

'$ .unbind()'다음에'.sortable()'을 다시 사용하려고합니다. 문제가 해결되었습니다 (http://stackoverflow.com/questions/15457292/how-to-re-enable-re-bind-jquery-ui-sortable-after-unbind#comment21871866_15457292 참조). 당신은 올바른 생각을 가지고있었습니다. – Steve

+0

@Max는 내 자신의 대답을 추가 한 것 같습니다. –

관련 문제