Z jakiegoś powodu element zastępczy dla moich sortowanych elementów ma około 10 pikseli. Wszystkie moje sortowane przedmioty mają różną wysokość. Jak mogę zmienić wysokość każdego symbolu zastępczego, aby pasował do przenoszonego elementu?
jquery
jquery-ui
jquery-ui-sortable
oshirowanen
źródło
źródło
Odpowiedzi:
Zwykle rozwiązuję ten problem, wiążąc wywołanie zwrotne, które ustawia wysokość symbolu zastępczego do wysokości sortowanego elementu ze
start
zdarzeniem. To proste rozwiązanie, które zapewnia precyzyjną kontrolę nad sposobem wyświetlania symbolu zastępczego.$( ".column" ).sortable({ connectWith: ".column", start: function(e, ui){ ui.placeholder.height(ui.item.height()); } });
Zobacz zaktualizowany przypadek testowy
źródło
Czy próbowałeś ustawić
forcePlaceholderSize:true
właściwość? Przeczytaj stronę z dokumentacją jQuery UI Sortable .źródło
.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; }
na.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; }
(więc usuń wysokość) Więc @DarthJDG masz rację!Czy twoje elementy
display: block
? Elementy wbudowane mogą spowodować, że symbol zastępczy nie będzie prawidłowo zachowywał wysokości. Na przykład. ten jsFiddle wydaje się mieć podobny problem do tego, który opisałeś. Dodaniedisplay: block
do.portlet
klasy rozwiązuje ten problem.źródło
Zamiast używać „ui.item.height ()”, możesz użyć „ui.helper [0] .scrollHeight”, aby uzyskać stabilny wynik również podczas przeciągania elementu z zewnętrznego kontenera.
$( ".column" ).sortable({ connectWith: ".column", start: function(e, ui){ ui.placeholder.height(ui.helper[0].scrollHeight); } });
źródło
Możesz ustawić styl dla symbolu zastępczego jako opcję sortowania.
$( "#sortable" ).sortable({ placeholder: "ui-state-highlight" });
I po prostu nadaj temu stylowi wysokość. Mam nadzieję, że to zadziała.
źródło
W moim przypadku znalazłem rozwiązanie podobne do JP Hellemons , w którym wymuszam wysokość symbolu zastępczego (z ! Ważne ) na niestandardową, a także ustawiam widoczność z tłem, aby zobaczyć zmiany dla siebie (również możesz w ten sposób stylizować swój element zastępczy tak jak chcesz ).
Działa to również z
display: inline-block;
.ui-sortable-placeholder { background:red !important; height: 2px !important; // this is the key, set your own height, start with small visibility: visible !important; margin: 0 0 -10px 0; // additionaly, you can position your placeholder, } // in my case it was bottom -10px
źródło