2009-09-16 10 views

Répondre

8

animate prend 2 plus params, de sorte que vous pouvez faire:

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

Untested.

EDIT: Testé: voici la pleine page je, qui se développe pour 300px rendre le déménagement plus évidente:

<!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

Salut Spender, Cela ne supprime pas l'élément lorsque l'animation est terminée. – Martin

+0

Parfait! Merci! – Martin

-3

Utilisez window.timeout avec le même temps que l'animation.

2

JQuery animate(params, [duration], [easing], [callback]) offre la possibilité d'ajouter un rappel qui est appelé à chaque fois que l'animation est terminée

rappel (en option) Fonction: Une fonction à exécuter chaque fois que l'animation complète, exécute une fois pour chaque élément animé contre.

La syntaxe est à peu près jQuery simple:

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

    }) 
</script> 

Voir aussi ce SO question

+0

Merci Daff , Pouvez-vous me donner un exemple de code? C'est la syntaxe que je ne comprends pas. – Martin

+0

Vérifiez la question que j'ai liée, il y a un échantillon de code là (copié ici aussi). Fondamentalement, vous venez de passer la fonction de rappel en tant que paramètre. – Daff

1

Mettre l'appel remove() dans la file d'attente d'effets comme ceci:

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

Je cherchais un moyen de mettre à jour le texte dans la file d'attente. Ces mots sont parfaits pour mettre des appels sans file d'attente comme .text ("") dans la file d'attente. –