如果没有下一个(),我怎么能回到开头

时间:2015-06-28 13:41:56

标签: javascript jquery

如果没有next()

,我怎么能回到开头呢?
$(function () {
  (function hideHeading() {
    setInterval(function () {
      $('.active').fadeOut(2000, function () {
        $(this).removeClass('active').next().addClass('active').fadeIn(2000);
      });
    }, 2000);
  })();
});

这里的例子

http://codepen.io/OsamaElzero/pen/LVeLeY

2 个答案:

答案 0 :(得分:0)

检查next是否为元素,如果没有,请选择第一个兄弟。

var elem = $(this).removeClass('active')
var next = elem.next();
if(next.length===0) {
    next = elem.siblings().first();
}
next.addClass('active').fadeIn(2000);

答案 1 :(得分:0)

实际上你不需要setInterval,因为你可以简单地进行如下的递归。如果.next()不存在,请将指针设置为first()

$(function () {
    (function hideHeading() {
        $(".active").fadeOut(2000, function () {
            var $this = $(this).removeClass('active');
            var $next = ($this.next().length && $this.next()) || ($this.siblings().first());
            $next.addClass('active').fadeIn(2000, hideHeading);
        });
    }());
});

<强> Updated Pen