css
.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>
我正在使用jQuery,并且我想让每个
.item
在随机的小时间后出现,例如:
javascript
$('.item').each(function () {
itm = $(this);
setTimeout(function () {
itm.fadeIn(1000);
}, Math.floor(Math.random() * 1000));
})
itm
将始终包含最后一个项目,因为该函数在所有赋值之后求值。
我无法使用 setTimeout()
的第三个参数,因为它在 IE 上不起作用。
由于安全原因,不建议将 setTimeout()
与 eval 方法一起使用。
那么,我如何通过 setTimeout()
访问我的对象呢?
编辑
我知道这个问题已经被发布过了。
但是我认为它稍微具体一些,涉及到了 each()
上下文。
现在有人完全改变了我的问题标题,原本是类似于'setTimeout() - jQuery.each() this object parameter'。
setTimeout()
中,this
指的是全局对象。你上面的代码甚至不应该对最后一项起作用。 - Kevin Bitm = $(this)
而不是var itm = $(this)
,我已经更新了我的问题。现在我不知道该接受哪个答案了 :) - Pierre de LESPINAYvar itm
和itm
之间的区别在于没有var
时它是一个单一的全局变量,而不是封闭函数每次调用的本地变量。这就是为什么setTimeout
只看到了列表中的最后一个元素。 - Izkata