cssCómo pasar 'esto' en una devolución de llamada 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>
estoy usando jQuery y me gustaría hacer de cada .item
que aparece después de una pequeño temporizador aleatorio como:
javascript
$('.item').each(function() {
itm = $(this);
setTimeout(function() {
itm.fadeIn(1000);
}, Math.floor(Math.random() * 1000));
})
Aquí itm
contendrá siempre el último elemento ya que la función se evalúa después de todas las tareas. No puedo usar el 3er parámetro de setTimeout()
porque no funcionará en IE.
No se recomienda utilizar setTimeout()
con el método eval por razones de seguridad.
Entonces, ¿cómo puedo acceder a mi objeto a través de setTimeout()
?
Editar
Sé que esta pregunta ya se han publicado.
Pero pensé que era un poco específico con el contexto each()
.
Ahora alguien ha cambiado por completo el título de mi pregunta que originalmente era algo así como 'setTimeout() - jQuery.each() este parámetro objeto'
'this' interior de' setTimeout() 'hace referencia al objeto global. Su código anterior ni siquiera debería funcionar para el último artículo. –
Lo siento, en realidad estaba haciendo 'itm = $ (this)' en mi código en lugar de 'var itm = $ (this)', actualicé mi pregunta. Entonces, ahora no sé qué respuesta aceptar :) –
@PierredeLESPINAY Aha. La diferencia entre 'var itm' y' itm' es que sin 'var' es una sola variable global, en lugar de una variable local para cada llamada de la función adjunta. Es por eso que setTimeout solo vio el último elemento en la lista. – Izkata