繁体   English   中英

jQuery在多个元素上间隔切换类

[英]jQuery toggle Class on multiple Elements with interval

我创建了这个小巧的jQuery代码段,以在一个间隔中切换元素的类:

setInterval(function(){$('.grid-item .slide-image').toggleClass('active')}, 800);

脚本工作正常! 现在,包装器.grid-item具有基类.slide-image多个元素。

<div class="grid-item">
  <div class="slide-image"><img src="http://www.placehold.it/500x500/233953"></div>
  <div class="slide-image"><img src="http://www.placehold.it/500x500/03144b"></div>
  <div class="slide-image"><img src="http://www.placehold.it/500x500/030a4b"></div>
</div>

有没有办法重写代码段,以便第二个.slide-image在第一个之后获得类.active 然后是第三个元素,依此类推...

问题: .slide-image定义尚未定义。 在某些情况下,其中有两个,在另一些情况下,则有四个要素。

看看我的CodePen!

尝试这个

var slides = $('.grid-item .slide-image'),  // cache slides 
    counter = 0;                            // global counter

setInterval(function(){
  slides.removeClass('active');             // remove active class
  slides.eq(counter).addClass('active');    // add active class
  counter++;

  if (counter == slides.length) counter = 0;  // reset counter after last slide
}, 800);

更新的CodePen

您可以检查当前活动元素ID是否最后。 如果是,则显示set中的第一个元素,否则显示下一个同级元素:

$(function(){
  var slides = $('.grid-item .slide-image');
  setInterval(function(){
    var currentactive = $('.active');
   var _target = currentactive.is(':last-child') ? slides.first() : currentactive.next();
   slides.removeClass('active')
  _target.addClass('active')
 }, 800);
});

工作演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM