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.