Nascondi div dopo pochi secondi


123

Mi chiedevo, come posso nascondere un div in jquery dopo pochi secondi? Come i messaggi di Gmail per esempio.

Ho fatto del mio meglio ma non riesco a farlo funzionare.


1
Nascondersi è abbastanza buono o hai bisogno che svanisca?
Joel Coehoorn

Risposte:


247

Questo nasconderà il div dopo 1 secondo (1000 millisecondi).

setTimeout(function() {
    $('#mydiv').fadeOut('fast');
}, 1000); // <-- time in milliseconds
#mydiv{
    width: 100px;
    height: 100px;
    background: #000;
    color: #fff;
    text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mydiv">myDiv</div>

Se vuoi solo nasconderti senza sbiadire, usa hide().


2
e hai battuto il pazzo Joel Coehoorn molto bene in un colpo solo! :)
cregox

3
@ James, di sicuro non c'è differenza nel risultato finale, ma suppongo che l'utilizzo dell'implementazione .delay()sia più "nativo" ed elegante per jQuery.
Paul T. Rawkeen

puoi sostituire .fadeOut('fast')con .hide()per nascondere istantaneamente il div.
Raptor

90

Puoi provare il file .delay()

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

chiama il div imposta il tempo di ritardo in millisecondi e imposta la proprietà che vuoi modificare, in questo caso ho usato .fadeOut () così potrebbe essere animato, ma puoi usare anche .hide ().

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


7
Questo è meglio perché non devo usare setTimeout e il codice è più facile da leggere.
Marek Bar

12

jquery offre una varietà di metodi per nascondere il div in modo tempestivo che non richiedono l'impostazione e la successiva cancellazione o reimpostazione dei timer degli intervalli o di altri gestori di eventi. Ecco alcuni esempi.

Pelle pura, un secondo di ritardo

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

Pelle pura, nessun ritardo

// hide immediately
$('#mydiv').delay(0).hide(0); 

Pelle animata

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

dissolvenza

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

Inoltre, i metodi possono assumere un nome di coda o funzionare come secondo parametro (a seconda del metodo). La documentazione per tutte le chiamate precedenti e altre chiamate correlate può essere trovata qui: https://api.jquery.com/category/effects/


10

C'è un modo davvero semplice per farlo.

Il problema è che .delay ha effetto solo sulle animazioni, quindi quello che devi fare è fare in modo che .hide () si comporti come un'animazione dandogli una durata.

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

Dandogli una bella breve durata, sembra essere istantaneo proprio come la normale funzione .hide.



3

L'uso del timer jQuery ti consentirà anche di avere un nome associato ai timer collegati all'oggetto. Quindi puoi collegare diversi timer a un oggetto e fermarne uno qualsiasi.

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

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

La funzione eval (e i suoi parenti, Function, setTimeout e setInterval) forniscono l'accesso al compilatore JavaScript. A volte è necessario, ma nella maggior parte dei casi indica la presenza di una codifica estremamente negativa. La funzione eval è la caratteristica più utilizzata in modo improprio di JavaScript.

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


2

Probabilmente il modo più semplice è utilizzare il plug-in dei timer. http://plugins.jquery.com/project/timers e quindi chiama qualcosa di simile

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

1
C'è qualche motivo valido per utilizzare il plug-in timer su setTimeout o setInterval?
spender

2
Direi che scaricare e allegare un plugin jquery è meno facile del semplice utilizzo di setTimeout.
Nathan Ridley

1
Non penso che sia necessariamente una cosa negativa, ma poiché è raro che io abbia mai usato timer nel mio codice, avere quel plugin in giro (leggi: codice extra, gonfio) per quelle poche volte non supera il costo. Se stavi scrivendo molto codice che necessitava di utilizzare i timer, e stavi usando jQuery, posso capire perché questo plugin sarebbe molto utile per mantenere la sintassi di jQuery ...
Jason Bunting,


0
<script>
      $(function() {
      $(".hide-it").hide(7000);
    });              
</script>

<div id="hide-it">myDiv</div>

Per favore, non pubblicare solo il codice come risposta, ma fornisci anche una spiegazione su cosa fa il tuo codice e come risolve il problema della domanda. Le risposte con una spiegazione sono generalmente più utili e di migliore qualità e hanno maggiori probabilità di attirare voti positivi.
Mark Rotteveel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.