Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    jQuery - preventDefault

    Salve,
    ho da poco cominciato a studiare jQuery emi trovo davanti ad un problema.
    Ho scritto questo codice:
    codice:
    $(document).ready(function () {
       $('.contfl').slideDown(1000);
       $('.footer').fadeIn(1000);
       $('div.menu3 a').click(function(e){
          e.preventDefault();
          $('div.conthead').fadeOut(1000);
          $('.contfl').slideUp(1000);
          $('.footer').fadeOut(1000);
       });
    });
    sono animazioni per dare effetto all'entrata ed uscita della mia pagina html.
    Adesso ho inserito preventDefault per dare precedenza agli effetti, ma così facendo il link non funziona più (giustamente).
    Come posso fare?

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,923
    cosa intendi con "dare precedenza agli effetti" ?

    puoi fornire un link funzionante su jsbin o jsfiddle mostrando un esempio conciso di cosa stai facendo e spiegando cosa vuoi ottenere?

    vuoi per caso cambiare pagina dopo che un insieme di animazioni si è concluso?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    [b]
    vuoi per caso cambiare pagina dopo che un insieme di animazioni si è concluso?
    Esatto!

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,923
    vedi esempio qui: http://jsbin.com/edepik/5/edit

    codice js/jQuery

    codice:
    $('a').on('click', function(evt) {
      
      evt.preventDefault();
      
      var _self = this,
          anims = [];
      anims.push($('#div1').animate({ left: "100px" }).promise());     
      anims.push($('#div2').fadeOut(2500).promise());
      anims.push($('#div3').fadeOut(1500).promise());
    
      
      $.when.apply(null, anims).done(function() {
          parent.location.href = _self.href;    
      });
      
    });
    tre div vengono animati con transizioni di differente durata al click sul link in alto (google) : al termine di tutti e tre gli effetti il browser effettua il cambio pagina.

    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Prima di tutto grazie!
    adesso funziona tutto...c'è un solo problema:
    Ho fatto copia ed incolla del codice, ho modificato i selettori con i miei nomi delle classi ma...
    non ho capito cosa ho fatto!
    Mica potresti spiegarmelo a grandi linee così capisco meglio su cosa sono intervenuto?

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,923
    hai creato tre promesse di esecuzione di codice asincrono attraverso il metodo promise() (vedi deferred objects nella documentazione di jQuery) e le hai inserite dentro un array

    poi attraverso il metodo di helper $.when() hai controllato che ogni promessa contenuta nell'array fosse risolta correttamente e quindi hai proseguito l'esecuzione del codice nella callback definita come argomento del metodo done()
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Diciamo che ancora è arabo...credo che riuscirò a capire andando avanti con lo studio!
    Grazie ancora!
    Alla prossima!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.