javascript - 如何将 'this' 传递给 setTimeout 回调

标签 javascript jquery scope 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));
})

此处 itm 将始终包含最后一项,因为该函数是在所有赋值之后计算的。
我不能使用 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 - 如何将 'this' 传递给 setTimeout 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9163818/

相关文章:

javascript - 如何从来自同一域的 iframe 访问 JSON?

c++ - 为什么指针分配的内存在函数之后仍然存在,而不是数组?

javascript - 如何获取光标下的文字?

javascript - 识别 Javascript 中的 html 数据属性

javascript - JS如何使用父函数的参数调用函数内部的函数?

C++:使用带有排序函数的完全限定名称 - 行为不一致

javascript - node.js - 如何进行简单的实时页面更新?

javascript - 使用 JavaScript 在页面完全加载后执行代码

javascript - 在 Bootstrap 模式中加载 iframe

JavaScript 闭包 : how they start leaking memory