Próbuję dodać wiersz do tabeli i wyświetlić ten wiersz w widoku, jednak funkcja slajdu wydaje się dodawać styl display: block do wiersza tabeli, który zaburza układ.
Jakieś pomysły na obejście tego?
Oto kod:
$.get('/some_url',
{ 'val1': id },
function (data) {
var row = $('#detailed_edit_row');
row.hide();
row.html(data);
row.slideDown(1000);
}
);
fadeIn
ifadeOut
pracuj nad rzędami tabel i stwórz przyjemny alternatywny efekt wizualny (testowany tylko w Firefoksie)Odpowiedzi:
Animacje nie są obsługiwane w wierszach tabeli.
Z „Learning jQuery” Chaffera i Swedberga
Możesz owinąć zawartość td w div i użyć na tym slajdu. Musisz zdecydować, czy animacja jest warta dodatkowego znacznika.
źródło
$('tr').find('td').animate({padding: '0px'}, {duration: 200});
Po prostu owijam tr dynamicznie, a następnie usuwam go po zakończeniu SlideUp / slideDown. To dość mały narzut dodający i usuwający jeden lub kilka tagów, a następnie usuwający je po zakończeniu animacji, nie widzę żadnego widocznego opóźnienia podczas robienia tego.
SlideUp :
Zjechać w dół:
Muszę oddać hołd fletchzone.com, kiedy wziąłem jego wtyczkę i rozebrałem ją z powrotem do powyższego, okrzyki kolego.
źródło
Oto wtyczka, którą napisałem na ten temat, trochę bierze z implementacji Fletcha, ale moja służy wyłącznie do przesuwania wiersza w górę lub w dół (bez wstawiania wierszy).
Podstawowe użycie:
Przekaż opcje slajdów jako indywidualne argumenty:
Zasadniczo, w przypadku animacji zsuwania w dół, wtyczka otacza zawartość komórek w DIV, animuje je, a następnie usuwa i odwrotnie w przypadku slajdu w górę (z kilkoma dodatkowymi krokami, aby pozbyć się wypełnienia komórki). Zwraca również obiekt, do którego go wywołałeś, dzięki czemu możesz łączyć takie metody:
Mam nadzieję, że to komuś pomoże.
źródło
Możesz spróbować zawinąć zawartość wiersza w a
<span>
i mieć selektor$('#detailed_edit_row span');
- trochę hacking, ale właśnie go przetestowałem i działa. Wypróbowałem równieżtable-row
powyższą sugestię i nie działała.aktualizacja : Pracowałem z tym problemem i ze wszystkich wskazań, jQuery potrzebuje obiektu, który wykonuje SlideDown, aby był elementem blokowym. Więc nie ma kości. Byłem w stanie wyczarować tabelę, w której użyłem SlideDown na komórce i nie miało to żadnego wpływu na układ, więc nie jestem pewien, jak twoja jest skonfigurowana. Myślę, że twoim jedynym rozwiązaniem jest przefakturowanie stołu w taki sposób, aby było w porządku z tą komórką będącą blokiem lub po prostu
.show();
cholerną rzeczą. Powodzenia.źródło
<td><div style="display:block">contents</div></td>
Wybierz zawartość wiersza w ten sposób:
.contents () - Uzyskaj elementy potomne każdego elementu w zestawie dopasowanych elementów, w tym węzłów tekstowych i komentarzy.
źródło
$('tr > td').contents().slideDown()
. Upewnij się, że cała zawartość wewnątrz kolumny jest owinięta tagiem, tzn.<td>Some text</td>
Nie będzie działać. To jest najprostsze rozwiązanie.Odpowiadam na to trochę za późno, ale znalazłem sposób na to :)
Właśnie wstawiłem element div do znaczników danych tabeli. gdy jest ustawiony jako widoczny, gdy div rozszerza się, cały rząd spada. następnie powiedz, aby zniknął (potem upłynął limit czasu, aby zobaczyć efekt), zanim ponownie ukryjesz wiersz tabeli :)
Mam nadzieję, że to komuś pomoże!
źródło
Potrzebowałem tabeli z ukrytymi wierszami, które przesuwają się i znikają z widoku po kliknięciu wiersza.
Pokaż fragment kodu
źródło
Mają wiersz tabeli z tabelą zagnieżdżoną:
Aby przesunąć W dół wiersza:
Uwaga: zarówno wiersz, jak i jego zawartość (tutaj
"table"
) powinny zostać ukryte przed rozpoczęciem animacji.Aby przesunąć w górę wiersza:
Drugi parametr (
function()
) to wywołanie zwrotne.Prosty!!
Zauważ, że istnieje również kilka opcji, które można dodać jako parametry funkcji przesuwania w górę / w dół (najczęściej są to czasy trwania
'slow'
i'fast'
).źródło
Ominąłem to, używając elementów td w rzędzie:
Animowanie samego wiersza powoduje dziwne zachowanie, głównie problemy z animacją asynchroniczną.
W powyższym kodzie podświetlam wiersz, który jest przeciągany i upuszczany w tabeli, aby podkreślić, że aktualizacja się powiodła. Mam nadzieję, że to komuś pomoże.
źródło
effect is not a function
Wykorzystałem przedstawione tu pomysły i napotkałem pewne problemy. Naprawiłem je wszystkie i mam gładką jedno-linijkę, którą chciałbym się podzielić.
Używa css na elemencie td. Zmniejsza wysokość do 0 pikseli. W ten sposób liczy się tylko wysokość zawartości nowo utworzonego opakowania div w każdym elemencie td.
SlideUp działa powoli. Jeśli sprawisz, że będzie jeszcze wolniej, możesz zauważyć usterkę. Mały skok na początku. Wynika to z wymienionego ustawienia css. Ale bez tych ustawień wysokość rzędu nie spadłaby. Tylko jego treść.
Na końcu element tr zostaje usunięty.
Cały wiersz zawiera tylko JQuery i brak rodzimego Javascript.
Mam nadzieję, że to pomoże.
Oto przykładowy kod:
źródło
Chcę przesuwać całe ciało i udało mi się rozwiązać ten problem, łącząc efekty zanikania i przesuwania.
Zrobiłem to w 3 etapach (2. i 3. etap zostały zastąpione, jeśli chcesz zjechać w dół lub w górę)
Przykład slideUp:
źródło
Miałem problemy ze wszystkimi innymi oferowanymi rozwiązaniami, ale ostatecznie zrobiłem tę prostą rzecz, która jest gładka jak masło.
Skonfiguruj kod HTML w następujący sposób:
Następnie skonfiguruj javascript w następujący sposób:
Zasadniczo, ustaw „niewidoczny” wiersz na 0px, z div wewnątrz.
Użyj animacji na div (nie w wierszu), a następnie ustaw wysokość wiersza na 1px.
Aby ponownie ukryć wiersz, użyj odwrotnej animacji na div i ustaw ponownie wysokość wiersza na 0px.
źródło
Podobała mi się wtyczka, którą Vinny napisał i której używa. Ale w przypadku tabel w przesuwanym rzędzie (tr / td) rzędy zagnieżdżonej tabeli są zawsze ukryte, nawet po przesunięciu w górę. Zrobiłem więc szybki i prosty hack we wtyczce, aby nie ukrywać wierszy zagnieżdżonej tabeli. Po prostu zmień następujący wiersz
do
który znajduje tylko bezpośrednie tds, a nie zagnieżdżone. Mam nadzieję, że pomoże to komuś, kto korzysta z wtyczki i zagnieżdżone tabele.
źródło
Chciałbym dodać komentarz do wpisu # Vinny'ego, ale nie mam przedstawiciela, więc muszę opublikować odpowiedź ...
Znalazłem błąd we wtyczce - kiedy po prostu przekazujesz obiekt z argumentami, są one nadpisywane, jeśli nie zostaną przekazane żadne inne argumenty. Łatwo rozwiązane przez zmianę kolejności przetwarzania argumentów, kod poniżej. Dodałem również opcję niszczenia wiersza po zamknięciu (tylko, gdy miałem taką potrzebę!): $ ('# Row_id'). SlideRow ('up', true); // niszczy rząd
źródło
Jeśli chcesz przesuwać i przenosić wiersz tabeli jednocześnie, spróbuj użyć tych:
źródło
możesz użyć tych metod, takich jak:
źródło
Mogę to zrobić, jeśli ustawisz td w rzędzie, aby nie wyświetlał żadnych w tym samym czasie, gdy zaczniesz animować wysokość w rzędzie
źródło
Ten kod działa!
źródło
http://jsfiddle.net/PvwfK/136/
});
źródło
Wtyczka oferowana przez Vinny jest bardzo bliska, ale znalazłem i naprawiłem kilka drobnych problemów.
W przypadku komórek tabeli z dużą ilością treści (takich jak tabela zagnieżdżona z dużą ilością wierszy) wywołanie slideRow („w górę”), niezależnie od podanej wartości slideSpeed, zwinąłoby widok wiersza, jak tylko animacja wypełniania zostanie zakończona . Naprawiłem to, aby animacja wypełniania nie uruchamiała się, dopóki nie zostanie wykonana metoda slideUp () na zawijaniu.
źródło
Szybka / łatwa naprawa:
Użyj JQuery .toggle (), aby pokazać / ukryć wiersze po kliknięciu Row lub Anchor.
Trzeba będzie napisać funkcję, aby zidentyfikować wiersze, które chcesz ukryć, ale przełącznik tworzy funkcjonalność, której szukasz.
źródło