Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    4

    sipario con jquery e jquery easing

    Salve a tutti
    sto cercando di creare una sorta di sipario in javascript usando jquery, cerco di spiegare cosa sto facendo. Praticamente ho creato due div (che poi sono le due parti del sipario) e un terzo nascosto sotto di loro per ricevere i contenuti, nel div di sinistra ho messo un menu, quando clicco su una delle voci del menu parte lo script seguente
    codice:
    <script type="text/javascript">
            $(document).ready(function() {
                $curtainopen = false;
                $(".menu").click(function(){
                    $(this).blur();
                    if ($curtainopen == false){ 
                        $(this).stop().animate({queue:false, duration:350, easing:'easeOutBounce'}); 
                        $(".leftcurtain").stop().animate({width:'30%'}, 2000 );
                        $(".rightcurtain").stop().animate({width:'0px'},2000 );
                        $curtainopen = true;
                    }else{
                        $(this).stop().animate({queue:false, duration:350, easing:'easeOutBounce'}); 
                        $(".leftcurtain").stop().animate({width:'50%'}, 2000 );
                        $(".rightcurtain").stop().animate({width:'51%'}, 2000 );
                        $curtainopen = false;
                    }
                    return false;
                });
            });    
        </script>
    questo codice non fa altro che al click su uno degli elementi del div "menu" i due div contenitori "leftcurtain" e "rightcurtain" si aprano a sipario. La cosa in sè funziona correttamente, il mio problema sorge nel momento in cui clicco su un secondo link, praticamente il sipario si chiude (come prevede l'"else" dello script) ma non riesco in nessun modo a farlo riaprire automaticamente, insomma io vorrei che quando clicco su di un link il "sipario" si chiuda e poi si riapra.
    Ho provato a far riaprire il sipario stesso nel "else" ma purtroppo al click il sipario mi resta aperto e non si chiude mai. Qualcuno percaso ha qualche consiglio?

    Se può facilitare lo script usa le librerie jquery e jquery.easing

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    228
    Potrebbe essere questo il tuo problema, qui non sta impostando una variabile ma un nonsobenecosa:
    $curtainopen =false;
    //dovrebbe essere
    curtainopen=false

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    4
    Quote Originariamente inviata da SimoX90 Visualizza il messaggio
    Potrebbe essere questo il tuo problema, qui non sta impostando una variabile ma un nonsobenecosa:
    $curtainopen =false;
    //dovrebbe essere
    curtainopen=false
    Innanzitutto grazie per l'aiuto, $curtainopen è una variabile booleana che è usata nel codice per indicare se il sipario è aperto o chiuso... È corretta altrimenti non funzionava neanche il blocco if

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    devi cambiare un po' la logica, probabilmente raccogliere apertura e chiusura in funzioni a parte puo' aiutarti, per chiarire rapidamente:
    codice:
    function apri(){
      ...
    }
    
    function chiudi(){
      ...
    }
    
    al click su .menu
    ...if(chiuso) apri()
    else {
      chiudi()
      e setta un apri() da esguire dopo l' animazione di chiusura
    }
    ovviamente ti devi passare chi ha richiamato apri() e devi coprire casi particolari, tipo cancellare un apri() prima che parta perche' c'e' un click sullo stesso o altro elementoinsomma, il discorso si complica un po'...ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    4
    Quote Originariamente inviata da Xinod Visualizza il messaggio
    devi cambiare un po' la logica, probabilmente raccogliere apertura e chiusura in funzioni a parte puo' aiutarti, per chiarire rapidamente:
    codice:
    function apri(){
      ...
    }
    
    function chiudi(){
      ...
    }
    
    al click su .menu
    ...if(chiuso) apri()
    else {
      chiudi()
      e setta un apri() da esguire dopo l' animazione di chiusura
    }
    ovviamente ti devi passare chi ha richiamato apri() e devi coprire casi particolari, tipo cancellare un apri() prima che parta perche' c'e' un click sullo stesso o altro elementoinsomma, il discorso si complica un po'...ciao
    Ottimissima idea...grazie mille per il consiglio, provo e posto il risultato

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    4
    Scusatemi se rispondo solo ora
    volevo giusto comunicare a tutti che l'idea di xinod funziona egregiamente, due funzioni separate con quella di chiusura che richiama quella di apertura...grazie mille
    Saluti
    El Mosca

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.