2009-05-04 10 views
95

Ich frage mich, wie in Jquery ich in der Lage bin, ein div nach ein paar Sekunden zu verstecken? Wie zum Beispiel Google Mail-Nachrichten.Hide div nach ein paar Sekunden

Ich habe mein Bestes versucht, aber ich kann es nicht funktionieren.

+1

Ist nur gut genug versteckt, oder brauchen Sie es zu verblassen? –

Antwort

206

Dies wird das Div nach 1 Sekunde (1000 Millisekunden) verbergen.

setTimeout(function() { 
    $('#mydiv').fadeOut('fast'); 
}, 1000); // <-- time in milliseconds 

Wenn Sie nur, ohne verblassen ausblenden möchten, verwenden Sie hide().

+2

** und ** du hast verrückt geschlagen * Joel Coehoorn * sehr schön in einem Schuss! :) – cregox

+3

@James, Sicherlich gibt es keinen Unterschied im Endergebnis, aber ich nehme an, dass die Implementierung mit '.delay()' mehr "nativ" und elegant für 'jQuery' ist. –

+0

können Sie '.fadeOut ('fast')' durch '.hide()' ersetzen, um das div sofort zu verstecken. – Raptor

2

Wahrscheinlich ist der einfachste Weg, das Timer-Plugin zu verwenden. http://plugins.jquery.com/project/timers und dann wie

$(this).oneTime(1000, function() { 
    $("#something").hide(); 
    }); 
etwas nennen
+1

Gibt es einen zwingenden Grund, das Timer-Plugin über setTimeout oder setInterval zu verwenden? – spender

+2

Ich würde sagen, dass das Herunterladen und Anhängen eines jquery-Plugins * weniger * einfach ist als das einfache Verwenden von setTimeout. –

+1

Ich denke nicht, dass dies eine schlechte Sache ist, aber da es selten ist, dass ich Timer in meinem Code benutze, hat das Plug-in (gelesen: Extra Code, Bloat) für diese paar Male nicht die Kosten. Wenn Sie eine Menge Code schreiben, der Timer benötigt und jQuery verwendet, kann ich sehen, warum dieses Plugin sehr nützlich wäre, um mit der jQuery-Syntax zu bleiben ... –

6
$.fn.delay = function(time, callback){ 
    // Empty function: 
    jQuery.fx.step.delay = function(){}; 
    // Return meaningless animation, (will be added to queue) 
    return this.animate({delay:1}, time, callback); 
} 

Von http://james.padolsey.com/javascript/jquery-delay-plugin/

(Ermöglicht Verkettung von Methoden)

3

Mit dem jQuery-Timer ermöglicht es Ihnen, auch einen Namen mit den Timer zugeordnet haben, sind an das Objekt angehängt. Sie können also mehrere Timer an ein Objekt anhängen und eines davon anhalten.

$("#myid").oneTime(1000, "mytimer1" function() { 
    $("#something").hide(); 
}).oneTime(2000, "mytimer2" function() { 
    $("#somethingelse").show(); 
}); 

$("#myid").stopTime("mytimer2"); 

Die Funktion eval (und seine Verwandten, Funktion, setTimeout und setInterval) Zugang zum Compiler JavaScript bereitzustellen. Dies ist manchmal notwendig, aber in den meisten Fällen zeigt es das Vorhandensein extrem schlechter Codierung an. Die Eval-Funktion ist das am meisten missbrauchte Feature von JavaScript.

http://www.jslint.com/lint.html

80

Sie die

$(".formSentMsg").delay(3200).fadeOut(300); 

Ruf der div, die Verzögerungszeit in Millisekunden .delay() versuchen können und stellen Sie die Eigenschaft, die Sie in diesem Fall ändern möchten verwendete ich .fadeOut(), so dass es könnte animiert werden, aber Sie können auch .hide() verwenden.

http://api.jquery.com/delay/

+5

Das ist besser, weil ich nicht verwenden muss setTimeoutand code ist einfacher zu lesen. –

+1

+1, da dies die mehrfache Ausführung desselben Codes behandelt – Fanckush

10

Es ist eine wirklich einfache Möglichkeit, dies zu tun.

Das Problem ist, dass .delay nur Effekte Animationen, also was Sie tun müssen, ist, machen .hide() wie eine Animation, indem Sie eine Dauer geben.

$("#whatever").delay().hide(1);

Durch ihm eine schöne kurze Dauer zu geben, scheint es, wie die normale .Hide Funktion sofort zu sein.

5

jquery bietet eine Vielzahl von Methoden, um das div in einer zeitgesteuerten Art und Weise zu verbergen, die kein Einrichten und späteres Löschen oder Zurücksetzen von Intervall-Timern oder anderen Event-Handlern erfordert. Hier sind ein paar Beispiele.

Reines ausblenden

// hide in one second 
$('#mydiv').delay(1000).hide(0); 

Animation Verbergen

// start hide in one second, take 1/2 second for animated hide effect 
$('#mydiv').delay(1000).hide(500); 

Ausblendung

// start fade out in one second, take 300ms to fade 
$('#mydiv').delay(1000).fadeOut(300); 

Zusätzlich können die Verfahren, die einen Warteschlangennamen oder Funktion als zweiter Parameter nehmen (je nach Methode). Dokumentation für alle oben genannten Anrufe und andere verwandte Anrufe finden Sie hier: https://api.jquery.com/category/effects/

Verwandte Themen