【问题标题】:Making a jQuery image slider stop at last image and adding next and prev buttons使 jQuery 图像滑块在最后一张图像处停止并添加下一个和上一个按钮
【发布时间】:2016-04-08 02:38:24
【问题描述】:

我有以下示例,它遍历每个 LI,如果您将鼠标悬停,图像将暂停并在您鼠标移出时继续,但这是我所掌握的。

我希望它在到达最后一个 LI 时停止,并且还想让我添加的 2 个链接带有“下一个”和“上一个”类,所以如果单击它将移动到下一个或上一个图像。当然,如果在第一张图片上设置一个类,比如隐藏,如果在最后一张图片上设置下一个按钮隐藏所以不能使用,但是这是我所得到的。

$( function() {
  var timer;
      lis = $(".productImage");
  
  function showNext() {    
    var active = lis.filter(".active").removeClass("active");
    var next = active.next();
    if (next.length===0) {
      next = lis.eq(0);  
    }
    next.addClass("active");    
  }
  
  function showPrev() {    
    var active = lis.filter(".active").removeClass("active");
    var prev = active.prev();
    if (prev.length===0) {
      prev = lis.eq(0);  
    }
    prev.addClass("active");    
  }

  function playGallery() {
    stopGallery();
    timer = window.setInterval(showNext, 2500);
  }

  function stopGallery() { 
    if (timer) window.clearTimeout(timer);
  }
  
  // move to next image
  $('.galleryNext').on('click', function(event){
    stopGallery();
    showNext();
  });

  // move to previous image
  $('.galleryPrev').on('click', function(event){
    stopGallery();
    showPrev();
  });
  
  // reset slider timer if thumbnail changed
  $('.thumbnail-list li a').on('click', function(event){
    stopGallery();
    playGallery();
  });
  
  // pause image slider if mouse is hovering gallery main image
  $(".featured-image-list")
    .on("mouseleave", playGallery)
    .on("mouseenter", stopGallery);

  playGallery();
  
});
.productImage {
    display : none;  
}

.productImage.active {
    display: block;  
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="featured-image-list">
  <li class="productImage active">1</li>
  <li class="productImage">2</li>
  <li class="productImage">3</li>
  <li class="productImage">4</li>
  <li class="productImage">5</li>
</ul>
<a class="galleryPrev">prev</a>
<a class="galleryNext">next</a>

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    修改您的代码的最低限度我想出了这个:

    JSFIDDLE

    只需将 showNext() 和 showPrev() 放在下面的函数中,就可以得到 next 和 prev 按钮,但需要注意的是它还会阻止幻灯片自动前进(我在您的编辑中看到这就是您所做的):

    function nextImage() {
      stopGallery();
      showNext();
    }
    
    function prevImage() {
      stopGallery();
      showPrev();
    }
    

    我会让你想出一个解决方案。

    您还可以通过添加以下内容来编辑 showNext 和 showPrev 函数:

    // add to showNext()
    if (next.next().length===0) {
        stopGallery();
        nextBtn.addClass("hidden");
    }
    
    // add to showPrev()
    if (prev.prev().length===0) {
        prevBtn.addClass("hidden"); 
    }
    

    【讨论】:

    • 我单击下一个并立即禁用,猜测应该是在第一次禁用时,然后单击下一个一直到最后,然后禁用......并且当它击中第二个时启用上一个?感谢您的帮助,但认为工作不正常:(
    • 差不多,反正默认禁用上一个链接?我在这里更新了按钮位置:jsfiddle.net/Lpgbzy2w/4
    • 我可能有向后的上一个和下一个按钮?再看看jsfiddle。为我工作:)
    • 要默认禁用上一个链接,我只需在 html 中添加“隐藏”类
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2021-04-13
    • 1970-01-01
    • 2019-11-07
    • 2015-11-24
    相关资源
    最近更新 更多