Ich versuche, einer Tabelle eine Zeile hinzuzufügen und diese Zeile in die Ansicht zu verschieben, aber die Funktion zum Herunterschieben scheint der Tabellenzeile einen Anzeigestil hinzuzufügen: Blockstil, der das Layout durcheinander bringt.
Irgendwelche Ideen, wie man das umgehen kann?
Hier ist der Code:
$.get('/some_url',
{ 'val1': id },
function (data) {
var row = $('#detailed_edit_row');
row.hide();
row.html(data);
row.slideDown(1000);
}
);
fadeIn
undfadeOut
arbeite an Tabellenzeilen und mache einen schönen alternativen visuellen Effekt (nur auf Firefox getestet)Antworten:
Animationen werden in Tabellenzeilen nicht unterstützt.
Aus "Learning jQuery" von Chaffer und Swedberg
Sie können Ihren td-Inhalt in ein div einbinden und das slideDown darauf verwenden. Sie müssen entscheiden, ob die Animation das zusätzliche Markup wert ist.
quelle
$('tr').find('td').animate({padding: '0px'}, {duration: 200});
Ich wickle das tr einfach dynamisch ein und entferne es dann, sobald das slideUp / slideDown abgeschlossen ist. Es ist ein ziemlich kleiner Aufwand, ein oder mehrere Tags hinzuzufügen und zu entfernen und sie dann zu entfernen, sobald die Animation abgeschlossen ist. Ich sehe überhaupt keine sichtbare Verzögerung dabei.
SlideUp :
Herunterrutschen:
Ich muss fletchzone.com meinen Tribut zollen, als ich sein Plugin nahm und es wieder auf das oben Gesagte zurückzog, Prost Kumpel.
quelle
Hier ist ein Plug-In, das ich dafür geschrieben habe. Es dauert ein wenig von Fletch's Implementierung, aber mein Plug-In wird nur verwendet, um eine Zeile nach oben oder unten zu schieben (kein Einfügen von Zeilen).
Grundlegende Verwendung:
Übergeben Sie Folienoptionen als einzelne Argumente:
Grundsätzlich verpackt das Plug-In für die Slide-Down-Animation den Inhalt der Zellen in DIVs, animiert diese, entfernt sie und umgekehrt für die Slide-Up-Animation (mit einigen zusätzlichen Schritten, um das Auffüllen der Zellen zu beseitigen). Es gibt auch das Objekt zurück, für das Sie es aufgerufen haben, sodass Sie Methoden wie folgt verketten können:
Hoffe das hilft jemandem.
quelle
Sie könnten versuchen, den Inhalt der Zeile in a zu wickeln
<span>
und Ihren Selektor zu haben$('#detailed_edit_row span');
- ein bisschen hackisch, aber ich habe es gerade getestet und es funktioniert. Ich habe auch dentable-row
obigen Vorschlag ausprobiert und es schien nicht zu funktionieren.Update : Ich habe mit diesem Problem herumgespielt und nach allen Angaben benötigt jQuery das Objekt, auf dem slideDown ausgeführt wird, um ein Blockelement zu sein. Also keine Würfel. Ich konnte eine Tabelle erstellen, in der ich slideDown für eine Zelle verwendet habe und die das Layout überhaupt nicht beeinflusst hat. Daher bin ich mir nicht sicher, wie Ihre eingerichtet ist. Ich denke, Ihre einzige Lösung besteht darin, die Tabelle so umzugestalten, dass es in Ordnung ist, wenn diese Zelle ein Block ist oder nur
.show();
das verdammte Ding. Viel Glück.quelle
<td><div style="display:block">contents</div></td>
Wählen Sie den Inhalt der Zeile folgendermaßen aus:
.contents () - Ruft die untergeordneten Elemente jedes Elements in den Satz übereinstimmender Elemente ab, einschließlich Text- und Kommentarknoten.
quelle
$('tr > td').contents().slideDown()
. Stellen Sie sicher, dass der gesamte Inhalt der Spalte in ein Tag eingeschlossen ist, dh<td>Some text</td>
nicht funktioniert. Dies ist die einfachste Lösung.Ich bin etwas hinter der Zeit zurück, als ich darauf antwortete, aber ich habe einen Weg gefunden, es zu tun :)
Ich habe gerade ein div-Element in die Tabellendaten-Tags eingefügt. Wenn es sichtbar ist und sich das Div ausdehnt, wird die gesamte Zeile heruntergefahren. Dann sag ihm, er soll wieder einblenden (dann Timeout, damit du den Effekt siehst), bevor die Tabellenzeile wieder ausgeblendet wird :)
Hoffe das hilft jemandem!
quelle
Ich habe eine Tabelle mit versteckten Zeilen erstellt, die beim Klicken auf eine Zeile ein- und ausgeblendet werden.
Code-Snippet anzeigen
quelle
Haben Sie eine Tabellenzeile mit verschachtelter Tabelle:
So schieben Sie die Zeile herunter :
Hinweis: Die Zeile und ihr Inhalt (hier ist es
"table"
) sollten beide ausgeblendet werden, bevor die Animation beginnt.So schieben Sie die Zeile hoch :
Der zweite Parameter (
function()
) ist ein Rückruf.Einfach!!
Beachten Sie, dass es auch mehrere Optionen gibt, die als Parameter für die Auf- / Ab-Funktionen des Schiebers hinzugefügt werden können (am häufigsten sind die Dauer von
'slow'
und'fast'
).quelle
Ich habe dies umgangen, indem ich die td-Elemente in der Zeile verwendet habe:
Das Animieren der Zeile selbst verursacht seltsames Verhalten, meistens asynchrone Animationsprobleme.
Für den obigen Code hebe ich eine Zeile hervor, die in die Tabelle gezogen und dort abgelegt wird, um hervorzuheben, dass die Aktualisierung erfolgreich war. Hoffe das hilft jemandem.
quelle
effect is not a function
Ich habe die hier bereitgestellten Ideen verwendet und war mit einigen Problemen konfrontiert. Ich habe sie alle repariert und habe einen glatten Einzeiler, den ich gerne teilen möchte.
Es verwendet CSS für das Element td. Es reduziert die Höhe auf 0px. Auf diese Weise ist nur die Höhe des Inhalts des neu erstellten Div-Wrappers in jedem td-Element von Bedeutung.
Das slideUp ist langsam. Wenn Sie es noch langsamer machen, können Sie einen Fehler feststellen. Ein kleiner Sprung am Anfang. Dies liegt an der genannten CSS-Einstellung. Ohne diese Einstellungen würde die Höhe der Reihe jedoch nicht abnehmen. Nur sein Inhalt würde.
Am Ende wird das tr-Element entfernt.
Die gesamte Zeile enthält nur JQuery und kein natives Javascript.
Ich hoffe es hilft.
Hier ist ein Beispielcode:
quelle
Ich möchte einen ganzen Körper schieben und habe dieses Problem durch die Kombination von Überblendungs- und Schiebeeffekten gelöst.
Ich habe dies in 3 Schritten gemacht (2. und 3. Schritt werden ersetzt, falls Sie nach unten oder oben rutschen möchten)
Beispiel für slideUp:
quelle
Ich hatte Probleme mit allen anderen angebotenen Lösungen, tat aber schließlich diese einfache Sache, die glatt wie Butter ist.
Richten Sie Ihren HTML-Code folgendermaßen ein:
Dann richten Sie Ihr Javascript folgendermaßen ein:
Grundsätzlich machen Sie die "unsichtbare" Zeile 0px hoch, mit einem Div im Inneren.
Verwenden Sie die Animation für das Div (nicht für die Zeile) und stellen Sie die Zeilenhöhe auf 1 Pixel ein.
Um die Zeile wieder auszublenden, verwenden Sie die entgegengesetzte Animation auf dem div und setzen Sie die Zeilenhöhe zurück auf 0px.
quelle
Ich mochte das Plugin, das Vinny geschrieben hat und verwendet hat. Bei Tabellen innerhalb der verschiebbaren Zeile (tr / td) werden die Zeilen der verschachtelten Tabelle jedoch auch nach dem Verschieben immer ausgeblendet. Also habe ich schnell und einfach das Plugin gehackt, um die Zeilen der verschachtelten Tabelle nicht zu verbergen. Ändern Sie einfach die folgende Zeile
zu
das findet nur unmittelbare tds nicht verschachtelte. Hoffe, dies hilft jemandem, der das Plugin verwendet und verschachtelte Tabellen hat.
quelle
Ich möchte # Vinnys Post einen Kommentar hinzufügen, habe aber keinen Repräsentanten, also muss ich eine Antwort posten ...
Es wurde ein Fehler in Ihrem Plugin gefunden. Wenn Sie ein Objekt nur mit Argumenten übergeben, werden diese überschrieben, wenn keine anderen Argumente übergeben werden. Einfach zu beheben, indem Sie die Reihenfolge ändern, in der die Argumente verarbeitet werden. Code unten. Ich habe auch eine Option zum Zerstören der Zeile nach dem Schließen hinzugefügt (nur weil ich sie brauchte!): $ ('# Row_id'). SlideRow ('up', true); // zerstört die Zeile
quelle
Wenn Sie eine Tabellenzeile gleichzeitig verschieben und ausblenden müssen, versuchen Sie Folgendes:
quelle
Sie können diese Methoden wie folgt verwenden:
quelle
Ich kann dies tun, wenn Sie die td's in der Zeile so einstellen, dass keine angezeigt werden, während Sie mit der Animation der Höhe in der Zeile beginnen
quelle
Dieser Code funktioniert!
quelle
http://jsfiddle.net/PvwfK/136/
});
quelle
Der von Vinny angebotene Stecker ist sehr nah, aber ich habe ein paar kleine Probleme gefunden und behoben.
Bei Tabellenzellen mit viel Inhalt (wie einer verschachtelten Tabelle mit vielen Zeilen) wird beim Aufrufen von slideRow ('up') unabhängig vom angegebenen slideSpeed-Wert die Ansicht der Zeile reduziert, sobald die Auffüllanimation ausgeführt wurde . Ich habe es behoben, damit die Auffüllanimation erst ausgelöst wird, wenn die slideUp () -Methode für den Wrapping abgeschlossen ist.
quelle
Schnelle / einfache Lösung:
Verwenden Sie JQuery .toggle () , um die Zeilen beim Klicken auf eine Zeile oder einen Anker anzuzeigen / auszublenden.
Es muss eine Funktion geschrieben werden, um die Zeilen zu identifizieren, die ausgeblendet werden sollen. Durch Umschalten wird jedoch die gewünschte Funktionalität erstellt.
quelle