【问题标题】:jQuery delay time seems to be wrongjQuery延迟时间似乎是错误的
【发布时间】:2012-02-27 15:25:00
【问题描述】:

我想让一个 div 淡出,然后让它们短暂暂停,然后让另一个 div 淡入。

这是我的尝试,但不起作用。淡入动画在淡出动画完成之前开始。

    $('.nav .filters').fadeOut('200');
    $('.nav .map-r').delay('300').fadeIn('200');

真正奇怪的是,如果我将每个动画延长 10 倍,效果会很好:

    $('.nav .filters').fadeOut('2000');
    $('.nav .map-r').delay('3000').fadeIn('2000');

【问题讨论】:

  • 那些在我看来是一样的 ;-)
  • fadeOut() 是否将数字作为参数而不是表示数字的字符串文字?尝试删除单引号。是的,单引号仅用于“快”、“慢”等,否则参数应该是无引号的数字。
  • 对我来说很好 - 只需删除间隔周围的引号...jsfiddle.net/KskfD

标签: jquery delay


【解决方案1】:

我认为这就是答案,我只是在上面复制并粘贴了我的评论:

“fadeOut() 是否将数字作为参数而不是表示数字的字符串文字?尝试删除单引号。是的,单引号仅用于“快速”、“慢”等,否则参数应该是一个没有引号的数字。”

fadeIn() 和 delay() 以及 toggle() 等也是如此。你可以称之为 jQuery 约定。

【讨论】:

    【解决方案2】:

    您应该将fadeIn() 放在fadeOut() 的回调中,以便在fadeOut 完成时执行它

    $('.nav .filters').fadeOut(200, function(){
       $('.nav .map-r').delay(300).fadeIn(200);
       //i'm not sure this works, if it doesn't just use setTimeout()
       //setTimeout(function(){$('.nav .map-r').fadeIn(200)}, 300);
    });
    

    【讨论】:

    • 您需要将第一个 setTimeout() 参数包装在匿名函数中,或者立即调用它并尝试将返回值作为回调传递给 setTimeout。
    • @ThiefMaster 是的,是的,我更正了,我只是不知道 delay() 是否像这样使用
    【解决方案3】:
    $('.nav .filters').fadeOut(200, function(){$('.nav .map-r').delay(300).fadeIn(200);});
    

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 2021-10-24
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      相关资源
      最近更新 更多