10

jQueryUI ma ładną wtyczkę, Sortable: http://jqueryui.com/demos/sortable/ Jestem bardzo zadowolony z tej wtyczki, ale brakuje mi tylko jednej rzeczy. I zamiast pozwolić elementom, które zmieniają pozycję pop/jump na nową pozycję, chciałbym zamiast tego "przesunąć się" do tej nowej pozycji. Innymi słowy, spraw, by była nieco bardziej płynna.sortowalna wtyczka jquery z "efektem przesuwania"?

Przeszukałem sieć przez trzy dni i nie znalazłem jednej wtyczki, która to robi (!?! ??). Mam na myśli, chodź, musi być jeden, prawda?

Próbowałem też trochę zmodyfikować kod, i udało mi się go trochę zmodyfikować (przez sklonowanie elementu, przesunięcie klonu do nowej pozycji, a następnie usunięcie klona. ukrywanie oryginalnego elementu i odkrywanie go po usunięciu klona). Ale to nie działa zbyt dobrze i pomyślałem, że gdzieś tam musi być coś lepszego!

Tak naprawdę błagam o pomoc. Albo modyfikację pomocy, lub jeśli widziałem plugin, który robi to, proszę (:

+0

Zauważyłem teraz, dlaczego moja metoda "nie działa". Wygląda na to, że jeśli przeciągnę mój element zbyt szybko, skrypt jquery-ui nie zauważy, że go przeciągnąłem, lol. Pobrałem nawet świeżą nową kopię (aby mieć pewność) i starałem się przeciągnąć ją naprawdę szybko nad innymi, a czasami kończyło się to niepowodzeniem. Pojawia się więc problem z oryginalnym kodem. Bleh – Eric

Odpowiedz

8

jeśli ciebie spójrz na sortable demo with placehoder i użyj następującego kodu, aby zainicjować sortable zobaczysz przesuwne ac cja w zastępczym

$(function() { 
    $("#sortable").sortable({ 
    placeholder: 'ui-state-highlight', 
    start: function (e,ui){  // new lines to 
     $(ui.placeholder).slideUp(); // remove popping 
    },        // effect on start 
    change: function (e,ui){ 
     $(ui.placeholder).hide().slideDown(); 
    } 
    }); 
    $("#sortable").disableSelection(); 
}); 

można zmienić klasy ui-state-highlight na cokolwiek chcesz go styl, można je niewidoczne za pomocą widoczności CSS właściwości i ustawić ją na ukrytej

ja wykonane podstawowy przykład w jsbin.com, dzięki czemu można zobaczyć, co jego jak

EDIT: example z popping efektu usuwane po zacząć sortowania

+0

To dobry sposób na wyjazd! Tylko jedno.Kiedy to ukryjesz, wszystkie elementy "poniżej" symbolu zastępczego przeskoczą do miejsca, w którym znajdował się symbol zastępczy, wtedy zaczną się zsuwać. Czy istnieje sposób, aby je "zablokować"? Ponieważ wygląda to bardzo zabawnie, jeśli przeciągniesz 5. na 4. element w twoim przykładzie ... – Eric

+0

Pewnie edytowałem w kodzie i dodałem przykład: – Ties

+0

Działa świetnie po przeciągnięciu, ale po przeciągnięciu symbol zastępczy po prostu znika, dając skok/snapped wygląd. Czy istnieje sposób, aby wykryć przeciąganie? –

0
  1. można sterować za pomocą opcji wydarzeń sprawdzić je ...
  2. becareful z kolejki, bo jeśli ty. przeciągnij jeden element, a następnie przeciągnij drugi withouth pierwszy wykończeniowych, które mogą wyglądać śmiesznie.
  3. polecam do zapoznania się .Zatrzymaj(), kolejki JQ i ewentualnie „anuluj bańki”
+0

Ach, ok, być może jest to "lepsze", aby korzystać z wydarzeń. Ale co masz na myśli przez "kontrolowanie" go? Obiekty są statyczne, innymi słowy, nie mogą być dynamicznie przenoszone na stronę, chyba że zmienisz właściwość na stałą/absolutną, co stwarza wiele problemów. – Eric

+0

Mam na myśli, że możesz użyć 'start: function() { ...} 'aby utworzyć element ghost, a następnie użyj' drag: function() {...} ', aby przesunąć ducha w końcu użyj' stop: function() {...} ', aby zniszczyć ducha, a następnie przesuń oryginał do pozycji końcowej. czy coś takiego. – Val