2009-09-16 2 views

risposta

8

animate prende altre 2 params, in modo che si possa fare:

$("a.shift") 
    .click(function() 
     { 
      $("#introOverlay") 
       .animate({height: 0}, 2000,"linear",function() 
        { 
         $(this).remove(); 
        } 
       ) 
     } 
    ); 

testato.

EDIT: Testata: ecco la pagina intera che ho usato, che si espande per la rimozione 300px rendere più evidente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
     <script type="text/javascript"> 
      //<![CDATA[ 
      $(document).ready(function() 
      { 
       $(".shift").click(function() 
       { 
        $("#introOverlay") 
        .animate({height: 300}, 2000,"linear",function() 
        { 
         $(this).remove(); 
        }) 
       }); 
      }); 
      //]]> 
     </script> 
    </head> 
    <body> 
    <a class="shift" href="javascript:void(0)">clickme</a> 
    <div id="introOverlay" style="background-color:red;height:200px;">overlay</div> 
    </body> 
</html> 
+0

Hi Spender, Questo non rimuove l'elemento al termine dell'animazione. – Martin

+0

Perfetto! Grazie! – Martin

-3

Utilizzare window.timeout con lo stesso tempo impiegato dall'animazione.

2

JQuery animate(params, [duration], [easing], [callback]) offre la possibilità di aggiungere un callback che viene chiamata per ogni volta che l'animazione è completata

callback (opzionale) Funzione: Una funzione da eseguire ogni volta che completa l'animazione , esegue una volta per ogni elemento animato contro.

La sintassi è praticamente jQuery semplice:

<script> 
$(function() { 
    $("a.shift").click(function() { 
     $("#introOverlay").animate({ 
     height: 0, 
     }, 2000, "linear", 
      function() { 
       $("#introOverlay").hide(); 
      } 
     ) 
     }); 

    }) 
</script> 

Vedi anche questo SO question

+0

Grazie Daff , Puoi darmi qualche codice di esempio? È la sintassi che non capisco. – Martin

+0

Controlla la domanda che ho collegato, c'è un esempio di codice (copiato anche qui). Fondamentalmente si passa semplicemente la funzione di callback come parametro. – Daff

1

Mettere la chiamata remove() in coda effetti in questo modo:

$("a.shift").click(function() { 
    $("#introOverlay").animate({ 
    height: 0, 
    }, 2000); 
    $("#introOverlay").queue(function() { 
    $(this).remove(); 
    $(this).dequeue(); 
    }); 
}); 
+0

Stavo cercando un modo per aggiornare il testo in coda. Questo è ottimo per mettere in coda le chiamate non in coda come .text (""). –