2010-05-28 6 views
0

J'ai ceci:l'aide d'une fonction .delay() avant Css() la manipulation dans jQuery

var $ul = $(this).children("ul"); 
$ul.animate({opacity: 0}, 1000); 
$ul.delay(1000).css("display", "none") 

Il est pour mon menu déroulant, et je veux qu'il disparaissent progressivement avant qu'il ne disparaisse en utilisant la propriété display: none; CSS . Cependant, il semble que le .delay() ne peut pas être utilisé sur le .css(); cela ne fonctionne pas, le $ul disparaît tout de suite.

Je ne peux pas non plus utiliser $ul.animate({opacity: 0, display: "none"}, 1000);.

Répondre

2

Le dernier paramètre à animate est un rappel qui est appelée lorsque l'animation est terminée, vous pouvez l'utiliser comme ceci:

$ul.animate({opacity: 0}, 1000, function() { 
    $(this).css("display", "none") 
}); 
2

Comme codeka dit le rappel est la bonne approche, mais il y a quelques méthodes de raccourci intégrées dans vous pouvez utiliser pour simplifier davantage, .fadeOut() et .hide(), comme ceci:

$ul.fadeOut(1000, function() { 
    $(this).hide(); 
}); 
+0

Merci, mais je préfère utiliser le '.animate()'. Appelez-la préférence personnelle, si vous voulez =) – Fabian

+0

@Fabian si vous préférez deux fois les octets vous assommer :) Je préfère profiter de ce qui est là ... le client a déjà téléchargé ces fonctions, pourrait aussi bien les enregistrer plus de bande passante par les utiliser :) –