jQuery - 循环图像

标签 jquery image loops

我的一组图像中有 3 张图像,我想将其循环 3 次。在最后一个循环中,我希望最后一个图像保持不变而不改变。

到目前为止,我已经得到以下内容:

HTML:

<div class="banners">
    <img src="http://placehold.it/250/27B700/ffffff?text=first" alt="" />
    <img src="http://placehold.it/250/000CB7/ffffff?text=second" alt="" />
    <img src="http://placehold.it/250/ff0000/ffffff?text=last" alt="" />
</div>

JS:

$(document).ready(function() {

    var intId;
    var $banners = $('.banners');
    var timeout  = 16000;

    $banners.find('img:gt(0)').hide();

    function imageRotation() 
    {
        var $current = $banners.find('img:visible');
        var $next = $current.next();

        if ($next.length == 0) 
        {
            $next = $banners.find('img:eq(0)');
        }

        $current.fadeOut();
        $next.fadeIn();
    }

    intId = setInterval(function() {
        imageRotation();
    }, 2000);

    setTimeout(function() {
        clearInterval(intId);
    }, timeout);

});

目前,我使用 16000 超时来确定循环计数和旋转所到达的最后一个图像。

这适用于 Firefox,但不适用于某些浏览器,并且不是可靠的方法。

任何人都可以阐明如何精确地进行 3 个循环并落在该组的最后一个图像上吗?

我是否正确地假设我必须创建一个变量并在该组的最后一个图像出现和消失后更新该变量?

这是一个JSFiddle实时预览

最佳答案

你可以尝试像这样的计数器

$(document).ready(function() {

  var sage_intId, $sage_banners = $('.banners'),
    $imgs = $sage_banners.find('img'),
    counter = 0;

  $imgs.slice(1).hide();

  function sage_imageRotation() {
    var $current = $imgs.filter(':visible'),
      $next = $current.next();

    if ($next.length == 0) {
      $next = $sage_banners.find('img:eq(0)');
    }

    $current.fadeOut();
    $next.fadeIn();

    if ($next.is($imgs.last())) {
      if (++counter > 2) {
        clearInterval(sage_intId);
      }
    }
  }

  sage_intId = setInterval(function() {
    sage_imageRotation();
  }, 500);
});
.banners {
  margin: 0 auto;
  width: 250px;
  height: 250px;
  position: relative;
  margin-right: 10px;
  float: left;
}
.banners img {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="banners">
  <img src="http://placehold.it/250/27B700/ffffff?text=first" alt="" />
  <img src="http://placehold.it/250/000CB7/ffffff?text=second" alt="" />
  <img src="http://placehold.it/250/ff0000/ffffff?text=last" alt="" />
</div>

关于jQuery - 循环图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31960362/

相关文章:

javascript - 当div没有div的id时获取内容...只有类

html - 背景图像 CSS 的最大尺寸

c# - 仅从图像位置在 C# 桌面应用程序中旋转图像

html - 如何为聊天气泡创建循环?

jquery - 如何突破 jQuery 的每个循环?

javascript - 如何确定实际悬停的是哪个元素

javascript - jQuery mouseenter 不触发

javascript - 如何验证简单的 Web 表单

image - Grails 资源插件、模块和 <r :img> to render images?

python - 如何结束程序(Python)?