设置多个对象的超时

时间:2011-12-30 03:51:06

标签: javascript jquery

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

this回调中的setTimeOut()不符合您的想法(它指向全局对象,window)。

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

答案 1 :(得分:0)

如上所述,thiswindow方法的回调函数范围内使用时引用window.setTimeout()对象。您可以通过在this click的{​​{1}}处理程序范围内设置等于.flyercontainer的变量来解决此问题,但在调用setTimeout()之外。

或者,您可以在两个零持续时间动画之间链接jQuery的delay()方法,以获得对象的不透明度,以实现相同的效果。 (演示:http://jsfiddle.net/V2ZYy/

相关问题