3

下面我调用一个函数。该函数等待,然后淡出图像,等待,然后将其淡入。

function fadeOut() {
  $('img.my-image').delay(5000).fadeOut(500, function() {
    $('img.my-image').delay(5000).fadeIn(500);
  });
}
fadeOut();

我怎样才能让这个功能永远重复?我可以在 fadeOut 函数的关闭 } 之前放置一行代码,使其再次从头开始吗?

更新 - 这是我的 Drupal 站点。看来代码应该可以工作。http://smartpeopletalkfast.co.uk/t/

这是我的确切代码:

$(document).ready(function() {
  if ( $(window).width() > 960) {
    function fadeOutFunc() {
      $('.image-list .bottom').delay(1000).fadeOut(500, function() {
        $('.image-list .bottom').delay(1000).fadeIn(500,fadeOutFunc);
      });
    }

    fadeOutFunc();
    // jQuery('.image-list .bottom').css('opacity','0.6');
  }    
});
4

2 回答 2

2

是的,只需告诉它在结束时调用自己fadeIn。幸运的是,jQuery 内置了对此的支持,您已经在使用它在淡出后淡入:

function fadeOut() {
    $('img.my-image').delay(5000).fadeOut(500, function() {
        $('img.my-image').delay(5000).fadeIn(500,fadeOut); // <-- see the tiny change?
    });
}

fadeOut();

编辑:在我看来,您可以使用更多 jQuery 的语法来简化这一点:

function fadeOut() {
    $('img.my-image').delay(5000).fadeOut(500).delay(5000).fadeIn(500,fadeOut);
}
fadeOut();
于 2013-09-08T17:49:52.620 回答
1

如果是我,我会使用 setInterval:

setInterval(function fadeOut() {
    $('img.my-image').delay(5000).fadeOut(500, function() {
        $('img.my-image').delay(5000).fadeIn(500);
    });
}, 1000);

这将每 1 秒加载一次函数,因为 1000 毫秒是 1 秒。而且它不会停止!

编辑:您可以为您的工作使用任何几秒钟。只需将它们用作 second_count * 1000 作为 2*1000 或 2000 2 秒。

好吧,这不是 Jan Dovark 的问题,您可以尝试使用以下代码:

$(window).focus(function() {

所以 setInterval 在窗口选项卡处于焦点时起作用!

于 2013-09-08T17:53:18.097 回答