Autor | Zpráva | ||
---|---|---|---|
stepanka Profil * |
#1 · Zasláno: 2. 9. 2009, 16:30:20
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 * |
#2 · Zasláno: 2. 9. 2009, 16:42:20
Nejsem si jistý, ale nejde něco jako
$("#inputs").append(<p style="display:none">xxx</p>).show('slow'); |
||
Kajman_ Profil * |
#3 · Zasláno: 2. 9. 2009, 16:43:00
$("#inputs").append('<p style="display:none">xxx</p>').show('slow');
|
||
stepanka Profil * |
#4 · Zasláno: 2. 9. 2009, 16:48:08
Kajman_
Díky za reakci, ale to bohužel nejde.. |
||
ah01 Profil |
#5 · Zasláno: 2. 9. 2009, 17:04:14 · Upravil/a: ah01
$("<p>xxx</p>").hide().appendTo("#ahoj").show("slow"); http://jquery.jslab.net/zkousecka/#8e3a38f713d395e116a4c1588a74b274 |
||
Nox Profil |
#6 · Zasláno: 2. 9. 2009, 17:05:48 · Upravil/a: Nox
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 * |
#7 · Zasláno: 2. 9. 2009, 17:20:17
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 |
#8 · Zasláno: 2. 9. 2009, 17:21:13 · Upravil/a: ah01
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 * |
#9 · Zasláno: 2. 9. 2009, 17:30:32
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 * |
#10 · Zasláno: 2. 9. 2009, 17:37:56
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 * |
#11 · Zasláno: 2. 9. 2009, 17:42:39
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 |
#12 · Zasláno: 2. 9. 2009, 17:43:35
ah01
J, díky, už chápu stepanka input.hide(700).remove() ? |
||
stepanka Profil * |
#13 · Zasláno: 2. 9. 2009, 17:45:06
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 |
#14 · Zasláno: 2. 9. 2009, 17:49:52 · Upravil/a: ah01
stepanka
Callback parametr po skončení efektu má i hide, takže input.hide(700, function(){input.remove();}) bude fungovat taky. |
||
stepanka Profil * |
#15 · Zasláno: 2. 9. 2009, 17:53:06
ah01
Paráda, takhle je to ještě jednodušší.. Díky. |
||
Časová prodleva: 15 let
|
0