Autor Zpráva
stepanka
Profil *
Ahoj,

nevíte někdo, jak v jQuery použít metodu show('slow') na append? Když dám

$("#inputs").append(<p>xxx</p>).show('slow');


tak to nic nedělá. Dočetla jsem se, že show na append použít nelze. Našla jsem někde na webu řešení ve stylu

$("#inputs").hide(this).append(<p>xxx</p>).show('slow');


ale není to moc hezké. Když přidávám ke čtyřem odstavcům pátý, všechny 4 mi zmizí, a pak se jich pomalu objeví 5. Chtěla bych mít ty 4 pořád na místě, jen k nim plynule přišoupnout pátý.

Nesetkal jste se s tím někdy někdo?

Děkuju
Kajman_
Profil *
Nejsem si jistý, ale nejde něco jako
$("#inputs").append(<p style="display:none">xxx</p>).show('slow');
Kajman_
Profil *
$("#inputs").append('<p style="display:none">xxx</p>').show('slow');
stepanka
Profil *
Kajman_
Díky za reakci, ale to bohužel nejde..
ah01
Profil
$("<p>xxx</p>").hide().appendTo("#ahoj").show("slow");

http://jquery.jslab.net/zkousecka/#8e3a38f713d395e116a4c1588a74b274
Nox
Profil
Nejsem expert ale...podle mě jde o to, že v době kdy má nastat událost "show", to co má přidat append ještě neexistuje, takže vytvořit 2. příkaz, kterým se to provede
Edit:
Ha, ah01 javascriptu rozumí, tak snad mou teorii potvrdí/vyvrátí...taky koukám přišel s jednopříkazovým řešením
stepanka
Profil *
ah01
Jéé ty jsi poklad, děkuju!

Nox
Taky díky za reakci. Ty příkazy se dají řetězit, takže rozepisovat to na 2 příkazy (na dva řádky) jsem ani nezkoušela. Ale to, co napsal ah01 mě stejně nenapadlo :-)
ah01
Profil
Nox
Moc jsem nepobral co myslíš, ale asi to dobře nechápeš.

$("#inputs").append("<p>xxx</p>").show("slow");

Tohle znamená: najdi element s id "inputs", přidej do něj <p> a pak ho zobraz. Když to rozepíšu je stejné jako:

var e = $("#inputs");
e.append("<p>...</p>"); // přidám do e nějaký obsah
e.show("slow"); // pomalu ho zobrazím, ale moment, diť on není schovaný!

Možná je ze začátku pro někoho matoucí to spojování příkazů za sebou. To má ale jednoduché pravidlo: každá metoda jQuery vrací objekt na kterém ji zavolám.

Tedy $("#inputs").append(<p>xxx</p>) vrací to $("#inputs") nikoli jQuery objekt pro odstavec, který jsem tím přidal do #inputs.
stepanka
Profil *
ah01
A věděl bys ještě, jak elementu říct, aby zmizel, ale pomalu?

Když mám

input.remove();


Tak zmizí rychle. A když mám

input.hide(700);


tak zmizí pomalu, ale po reloadu stránky se zase objeví (protože je jenom zneviditelněný).

Doufám, že mi rozumíš..
jso
Profil *
stepanka
po reloadu se stránka zobrazí ve výchozím stavu (bezstavovost). Pokud chceš, aby po reloadu zůstala tak, jak před reloadem, musíš vymyslet něco podobného.
stepanka
Profil *
jso
Po reloadu ne, to jsem se vyjádřila špatně, to se omlouvám. Jen jsem chtěla, ať se pomalu odstraní. Ale už jsem na to přišla:

input.animate({ opacity: 'hide' }, 700, function(){$(this).remove();});
Nox
Profil
ah01
J, díky, už chápu

stepanka
input.hide(700).remove()
?
stepanka
Profil *
Nox
input.hide(700).remove(); bylo první co jsem zkusila, ale ne-e... To řešení v mém příspěvku výš funguje.
ah01
Profil
stepanka
Callback parametr po skončení efektu má i hide, takže

input.hide(700, function(){input.remove();})

bude fungovat taky.
stepanka
Profil *
ah01
Paráda, takhle je to ještě jednodušší.. Díky.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: