1

jQuery API 文档show()指出,从 jQuery 1.4.3 开始,可以这样调用.show()

.show( [duration ] [, easing ] [, complete ] )

论据是:

  • duration(默认值:400):一个字符串或数字,确定动画将运行多长时间。
  • easing(默认值:swing):一个字符串,指示用于过渡的缓动函数。
  • complete:动画完成后调用的函数。

我不需要缓动,所以我只调用这个版本:

.show( [duration ] [, complete ] )

我有一个函数应该显示一个 div,等待 5 秒,然后在 500 毫秒内淡出。

我试过这个:

  $('#some_div').show( {
      duration: 5000,
      complete: function() { fadeOutHelper(500); }
  } );

还有这个:

$('#some_div').show(5000, function() { fadeOutHelper(500); } );

在这两种情况下,show()实际上都不会在调用辅助函数之前等待 5000 毫秒。

我在 StackOverflow 上找到了一种解决方法setTimeout()jQuery show for 5 seconds then hide

$('#some_div').show();
setTimeout(function() { fadeOutHelper(500); }, 5000);

虽然我有一个解决方法,但我想了解我是如何误解 jQueryshow()文档中一些非常简单的函数参数的。

4

1 回答 1

2

我有一个函数应该显示一个 div,等待 5 秒,然后在 500 毫秒内淡出。

你想在 5 秒内显示一个 div,还是立即显示一个 div 然后等待 5 秒回调?如果是前者,那么第二次尝试就可以了,只是你有一个额外的}东西需要删除。使用一些额外的空白,很明显:

$('#some_div').show(5000, function() {
    fadeOutHelper(500);
}}); // oh noes, synax error

如果是后者,那么您引用的“解决方法”是实现您想要的正确方法。setTimeout不是黑客。对此没有任何“解决方法”:

$('#flash_helper').show();
setTimeout(function() { fadeOutHelper(500); }, 5000);
于 2013-02-11T17:14:04.830 回答