Avatar billede ssv Nybegynder
13. juli 2009 - 21:37 Der er 4 kommentarer og
1 løsning

jQuery problem: fadeOut og tilføj class fungerer ikke optimalt

Hello.

Jeg sidder her og leger med noget jQuery, og er rendt ind i et problem. Jeg har i tankerne at lave nogle knapper der skifter listevisning af nogle li'er. Li'erne er som standard listet som en række á 3 stk. Når så man klikker på listevisningen skal li'erne fylde "det hele" så der nu kun er én li pr. linje.

Men som mit eksempel er nu, bliver li'erne omdannet (og altså clss'en tilføjet) før hele ul'en (#list) er fadet ud. Kan man på nogen måde forhindre dette?

<script type="text/javascript">
$(function(){
    $('.change').click(function(){
        var $list = $('#list');
        $list.fadeTo("slow", 0.0).addClass('fulllist').fadeTo("slow", 1.0);
    });
});
</script>
Avatar billede ReneNP Nybegynder
14. juli 2009 - 08:34 #1
Du kan vente med at omdanne og fade elementerne ind, til efter at de er fadet ud:

<script type="text/javascript">
$(function(){
    $('.change').click(function(){
        var $list = $('#list');
        $list.fadeTo("slow", 0.0, function(){
          this.addClass('fulllist').fadeTo("slow", 1.0);
        });
    });
});
</script>
Avatar billede ssv Nybegynder
14. juli 2009 - 10:58 #2
Jeg blev nødt til at rette "this.addClass[..]" til "$list.addClass[..]" da den meldte javascript fejl på det første. Men tak for hjælpen, det virker fantastisk :-) Smid et svar.
Avatar billede ReneNP Nybegynder
14. juli 2009 - 11:07 #3
Du kan evt. læse lidt mere om funktionen her: http://docs.jquery.com/Effects/fadeTo
Avatar billede ssv Nybegynder
14. juli 2009 - 11:10 #4
Lige et bonus spørgsmål: Er det muligt af "reverse" det hele (fade det ud, fjerne class'en og så fade det ind igen) når man klikker på linket igen?

Normalt ville jeg bruge nogle if else-halløj, men jeg har lidt problemer med. Er det simpelt at lave?
Avatar billede ReneNP Nybegynder
14. juli 2009 - 11:28 #5
Du kan bruge removeClass funktionen, ligesom du bruger addClass nu.
Så istedet for .addClass('fulllist') skriver du .removeClass('fulllist')
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester