-1

我用函数调用为 show div 创建了这个函数,但是我需要执行这个函数并在 show 后一秒钟内停止:

<script>

function repit_clouds(request)
{
  if (request=='no')
  {
    stop();
  }
  else
  {
    if (request=='ok')
    {
      var interval = setInterval(function() {
        $("#header_sun").fadeIn(4000);
        $("#header_sun").fadeOut(4000);
      },10000);
    }
  }
}

$(document).ready(function() 
{

  $("#header_sun").fadeIn(4000).delay(4000).fadeOut(4000);
  repit_clouds('ok');
  $("#header_background_clouds").fadeOut(2000).css("display","#none");
  $("#header_background_night").fadeIn(2000).css("background","#000").show(4000).fadeIn(2500);
  repit_clouds('no');
});
</script>

repit_clouds 函数的问题,当我发送值 no 时,函数必须停止,但没有正常工作并继续request==ok,我不知道为什么不停止

4

1 回答 1

2

嗯,你到底是怎么想stop()的?你也许是说:

$('#header_sun').stop()

这会暂停该元素上的任何现有动画?

或者您是否还想停止间隔计时器:

clearInterval(interval);

当然,这也需要在函数外部interval声明,这样每次调用函数时它的值都不会丢失。

我还注意到,您的.css()函数不会被.fadeOut()or.show()调用排队 -.css()不是动画函数,因此这些更改总是会立即发生。

同样,这两个调用repit_clouds()也不会排队 - 如果您希望在之前的动画之后完成这些调用,那么您需要调查 jQuery.queue()函数,或者在“动画完成回调”期间触发它们。

于 2013-03-22T13:56:48.583 回答