javascript – 如何将“this”传递给setTimeout回调

前端之家收集整理的这篇文章主要介绍了javascript – 如何将“this”传递给setTimeout回调前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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));
})

在这里,它将始终包含最后一个项目,因为在所有赋值之后对该函数进行评估.
我不能使用setTimeout()的第三个参数,因为它不会在IE上工作.
出于安全考虑,不建议使用setTimeout()和eval方法.

那么如何通过setTimeout()访问我的对象?

编辑

我知道这个问题已经发布了.
但是,尽管它与each()上下文有些特定.
现在有人完全改变了我的问题的标题,原来是像“setTimeout() – jQuery.each()这个对象参数’

解决方法

不要使用setTimeout,使用jQuery自己的工具.
$('.item').each(function () {
   $(this).delay(Math.random() * 1000).fadeIn();
})

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

工作实例:http://jsfiddle.net/qENhd/

猜你在找的JavaScript相关文章