jquery - DOM-Element nach definierter Zeit ausblenden

jquery - DOM-Element nach definierter Zeit ausblenden

Neben dem setTimeout Befehl den Javascript von sich aus bietet gibt es in jquery weitere Möglichkeiten ein DOM-Element nach einer definierten Zeit auszublenden.

Ziel soll es sein eine Drupal-Status-Meldung nach 3 Sekunden automatisch ausfaden zu lassen..

Dazu habe ich mir in der page.tpl.php ein weiteres DIV "gesetzt":
Sauberer wäre es, wie stborchert gerade im IRC bemerkte, die Statusmessage über die Theme Funktionen von Drupal zu erweitern..

<?php
if ($show_messages &&  $messages) {
print
'<div id="status_message_wrapper">';
print
$messages;
print
'</div>';
}
?>

Nutzung der .animate() Funktion ( >=jquery 1.3 )

// Status Messages ausblenden
if($('#status_message_wrapper').length>0){
    $('#status_message_wrapper').animate({opacity: 1.0}, 3000).fadeOut('slow', function() {
      $(this).remove();
   });
}

Der Trick ist hier die Animate Funktion eine zu nutzen, um die Zeit des "eingeblendet seins" zu definieren - die opacity sorgt einfach nur dafür dass das DIV in 100% ( also ohne Transparenz ) angezeigt wird, die Zeit wird im zweiten Parameter definiert. Nach 3 Sekunden wird das DIV ausgeblendet und aus dem DOM entfernt..

In jquery 1.4 steht für diesen Effekt die .delay() Funktion zur Verfügung