cssCome passare 'questo' in un callback setTimeout
.item {
display: none;
}
html
<div>
<div class="item">machin</div>
<div class="item">chose</div>
<div class="item">chouette</div>
<div class="item">prout</div>
</div>
sto usando jQuery e mi piacerebbe rendere ogni .item
compaiono dopo un piccolo timer casuale come:
javascript
$('.item').each(function() {
itm = $(this);
setTimeout(function() {
itm.fadeIn(1000);
}, Math.floor(Math.random() * 1000));
})
Qui itm
conterrà sempre l'ultima voce, perché la funzione è valutata dopo tutte le assegnazioni.
Non riesco a utilizzare il 3 ° parametro di setTimeout()
perché non funzionerà su IE.
Non è consigliabile utilizzare setTimeout()
con il metodo eval per motivi di sicurezza.
Quindi, come posso accedere al mio oggetto tramite setTimeout()
?
Modifica
so che questa domanda è già stato pubblicato.
Ma ho pensato che fosse leggermente specifico con il contesto each()
.
Ora qualcuno hanno completamente cambiato il titolo della mia domanda, che in origine era qualcosa come 'setTimeout() - jQuery.each() questo parametro oggetto'
'this' all'interno di' setTimeout() 'fa riferimento all'oggetto globale. Il tuo codice sopra non dovrebbe nemmeno funzionare per l'ultimo elemento. –
Scusa, stavo effettivamente facendo 'itm = $ (this)' nel mio codice invece di 'var itm = $ (this)', ho aggiornato la mia domanda. Quindi ora non so quale risposta accettare :) –
@PierredeLESPINAY Aha. La differenza tra 'var itm' e' itm' è che senza 'var' è una singola variabile globale, invece di una variabile locale per ogni chiamata della funzione di inclusione. Ecco perché setTimeout ha visto solo l'ultimo elemento nell'elenco. – Izkata