Javascript 为多个对象设置超时

Javascript 为多个对象设置超时,javascript,jquery,Javascript,Jquery,我有以下多个传单的代码,当点击时,将显示一个帮助文本覆盖,4秒后消失。我可以让它显示帮助文本,但超时不起作用 $(".flyercontainer").click(function(){ $(this).children('.flyerHelp').css('opacity',0.8); setTimeout(function(){ $(this).children('.flyerHelp').css('opacity',0); },4000); }) 谢谢您的帮助。您

我有以下多个传单的代码,当点击时,将显示一个帮助文本覆盖,4秒后消失。我可以让它显示帮助文本,但超时不起作用

$(".flyercontainer").click(function(){
  $(this).children('.flyerHelp').css('opacity',0.8);
  setTimeout(function(){
      $(this).children('.flyerHelp').css('opacity',0);
  },4000);
})

谢谢您的帮助。

您的
setTimeOut()
回调中的
不是您所认为的那样(它指向全局对象,
窗口


如上所述,
window.setTimeout()方法的回调函数范围内使用时,指的是
窗口
对象。您可以通过在
单击
处理程序的
范围内设置一个等于
this
的变量来解决此问题。flyercontainer
,但不在调用
setTimeout()
的范围内


或者,您可以将jQuery的
delay()
方法链接到两个零持续时间动画之间,以获得相同的对象不透明度效果。(演示:)

我投了反对票,因为你原来的帖子不是答案,你写的只是“
这个
不是你认为它在你的函数中的样子”,没有解释它是什么或者如何修复它。你编辑了你的帖子,显示了一个很好的解决方案,现在我改变了投票结果。@user1:这仍然是一个答案,我给出的建议是正确的,不是吗?你以前没有给出任何建议。现在你有了我的一票。在国际海事组织,它应该得到一个否决票,现在它应该得到一个赞成票。
$(".flyercontainer").click(function(){
  var children = $(this).children('.flyerHelp');
  children.css('opacity',0.8);
  setTimeout(function(){
      children.css('opacity',0);
  },4000);
});