2013-03-17 16 views
6

$('div.something').sortable(options) działa dobrze, ale znika po $('div.something').unbind();. Próba ponownego uruchomienia $('div.something').sortable(options); lub $('div.something').sortable('refresh'); po $('div.something').unbind(); nie pomaga.

Używam $ .unbind do dezaktywacji/anulowania wtyczki przez usunięcie zdarzeń z elementu, na który wtyczka jest stosowana, jednak ta technika ma negatywny wpływ na to, że łamie $ .sortable. Jakieś pomysły na ponowne aktywowanie sortowalne?

Używam najnowszych wersji jQuery i jQuery UI.

+0

Co dokładnie próbujesz dezaktywować? Wywołanie rozłączenia wszystkich programów obsługi zdarzeń jest dość niebezpieczną operacją, ponieważ rezygnujesz z kontroli nad tym, co rozłączasz. –

+0

@RubenInfante Odrywam plugin (wiele kodu jQuery + szkielet), który robi zbyt wiele rzeczy, tak, że napisanie "zniszczonego" odpowiednika jest skomplikowane i poprawnie wyczyści jego kod. Inne wydarzenia, takie jak kliknięcie, działają dobrze po rozwiązaniu, ale sortowanie daje mi kłopoty. – Steve

+0

czy chcesz wyłączyć "sortable" wtyczkę lub chcesz wyłączyć wszystkie zdarzenia z elementu –

Odpowiedz

8

Wykonywanie połączenia do .sortable('destroy') przed wywołaniem .unbind() będzie całkowicie usunąć sortable funkcję od elementu.

Zapewnia to prawidłowe oderwanie przed wykonaniem nieco niebezpiecznego połączenia z .unbind(), które usuwa wszystkie powiązane procedury obsługi na elemencie. Następnie możesz ponownie zainicjować funkcję do sortowania.

// 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 ('destroy') jest niesamowita. zabrał mnie trochę, aby go znaleźć :) – user3311522

7

Jeśli chcesz wyłączyć wtyczkę sortable Polecam używanie destroy metoda

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

Demo: Fiddle

+0

Próbuję ponownie aktywować '$ .sortable()' po '$ .unbind()'. Problem rozwiązany (patrz: http://stackoverflow.com/questions/15457292/how-to-re-enable-re-bind-jquery-ui-sortable-after-unbind#comment21871866_15457292). Miałeś właściwy pomysł. – Steve

+0

@Max wygląda na to, że dodałeś referencję moją własną odpowiedzią –

Powiązane problemy