Diskuze: Jquery - vyčkání na dokončení animace
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, najlepšie by bolo, ak by si tu vložil aj kód, aby sme sa na to vedeli pozrieť, prípadne nejaký screenshot, takto ako si to napísal, to je veľmi všeobecné.
Ahoj, udělal bych tam nějaký timout, který určí jestli už animace skončila nebo ne a na základě toho bych zakázal nebo povolil eventy u těch checkboxů.
Například pokud animace trvá 1 sekundu tak bych po kliknutí na chceckbox na právě tu 1 sekundu znemožnil klikání nebo volání dané funkce. Popřípadě se to dá dělat přes Date() a časy .-)
Například pokud znáš Lodash nebo Underscore knihovny tak můžeš
využít toto:
https://lodash.com/docs/4.17.4#…
jQuery animace mají complete argument - funkci.
Jak ti radí Verquido, stalo by za zvážení pro běhu aplikace checkbox
zneaktivnit a po jejím dokončení znovu oživit. No a nebo se pořádně
podívej na jQuery animace, správně umí queuing, což je přesně to co
potřebuješ.
Timeout nepomôže, nemusíš vopred vedieť koľko animácia potrvá, navyše je nepresný a callback v animate metóde nemusí byť v niektorých sitáciách možné použiť. Konkrétne sa mi to stalo, keď som položky menu, li elementy, vysunul o 100% von z viewportu a animoval ich postupný príchod na obrazovku. A chcel som po tom, ako skončí kompletná animácia, po poslednom li, zmeniť farbu aktívneho li. Stálo ma nemálo googlenia ako na to pravým, "jQuery way" spôsobom. Ale našiel som to, takže aby si nematuroval nad tým istým, tu ho máš:
$(selektor).animate({vlastnosti}, trvanie).promise().then(callback po skončení animácie)
A tu máš konkrétny príklad použitia: jsfiddle
Všem strašně moc děkuji za radu !
Tak jsem to nakonec udělal že na začátku animce dám všechny checkboxy jako
disable a po jejím skončení je aktivuji. Může to tak být ? Moc nevím jk
jinak to udělat můžu tomu zakázat click event, ale to je zase problém, že
na checkbox se dá klikat ale nic nedělá takže by to dělalo zmatek.
Podle me spravne reseni a tvuj pristup je naprosto spravny. Kdyz je to neaktivni, tak disabled.
Áno, tak nejak som si to aj predstavoval:
Budeš tak mať istotu, že budú zakázané / povolené presne počas trvania animácie.
Ono se nemusí ani používat to promise ne ? Stačí to udělat takhle:
$(this).html(addSpaces).animate({'opacity' : 1}, 100, function(){
//Zde všechny povolím - konec animace
});
Je možné, že je to takhle špatně, takže budu rád pokuď mě opravíte.
Nie nie, je to v poriadku aj tak, ako to máš. Pokiaľ máš len jednu animáciu, nie viacero naraz, stačí Ti callback. Ale tak či tak je vhodné si na to zvyknúť, miesto používania callbacku v animácii, lebo toto funguje tak ako človek očakáva, vždy ) Či už selektor vyberie jeden, či viac elementov, callback v then počká, kým skončia všetky animácie. Navyše je to asi aj jemne prehľadnejšie... Ale tak či onak, nijak zvlášť na tom nezáleží. To, ako si to vyriešil, je v poriadku. A toto už je fakt len "opinion based", takže všetky moje argumenty môžeš pokojne aj ignorovať.
$('element(s)')
.animate({attribute: value}, duration)
.promise().then(function () {
//callback implementation
})
Ignorovat určitě ne ! Jsem rád za takovéto rady. A jak je to vysvětleno tak vidím, že to má smysl používat. Díky moc
Zobrazeno 11 zpráv z 11.