首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery - addClass ACTIVE-->设置超时-->循环

jQuery - addClass ACTIVE-->设置超时-->循环
EN

Stack Overflow用户
提问于 2011-04-26 19:26:12
回答 4查看 2.1K关注 0票数 2

我有5个具有相同类的元素,在页面加载时,第一个div是活动的:

代码语言:javascript
复制
<div id="div-1" class="cssClass active"></div>
<div id="div-2" class="cssClass"></div>
<div id="div-3" class="cssClass"></div>
<div id="div-4" class="cssClass"></div>
<div id="div-5" class="cssClass"></div>

如何在jQuery将活动类传递到第二个div之前添加超时,依此类推,到达最后一个div并从第一个div重新启动?以此类推。(我希望避免使用jQuery周期插件。几行代码中有没有更简单的东西?)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-26 19:33:03

你可以像这样编写你自己的cycle插件:

代码语言:javascript
复制
(function($) {
    $.fn.cycle = function(timeout, cls) {
        var l = this.length,
            current = 0,
            prev = -1,
            elements = this;

        function next() {
            elements.eq(prev).removeClass(cls);
            // or just `elements.removeClass(cls);`
            elements.eq(current).addClass(cls);
            prev = current;
            current = (current + 1) % l; // modulo for wrap around
            setTimeout(next, timeout);
        }
        setTimeout(next, timeout);
        return this;
    };
}(jQuery));

并像这样使用它:

代码语言:javascript
复制
$('div').cycle(2000, 'active');

更新:忽略了第一个div已经是active。您可以通过添加以下内容来使插件检测已经处于活动状态的div:

代码语言:javascript
复制
if(this.filter('.' + cls).length > 0) {
    current = this.index(this.filter('.' + cls)[0]) + 1;
    prev = current - 1 ;
}

你也可以让函数接受一个从哪里开始的索引...

票数 7
EN

Stack Overflow用户

发布于 2011-04-26 19:33:42

这个应该可以了。注释中的解释。

代码语言:javascript
复制
function moveClass() {
   if ($('.active:first').next()) {
      $('.active:first')
          .removeClass('active') //remove the current class
          .next() //move to the next
          .addClass('active'); // add the class to the next div
   } else {
      $('.active').removeClass('active');
      $('.cssClass:first').addClass('active'); //move to the first of the lot if there is no more next()
   }

}

$('.cssClass:first').addClass('active');
setInterval(moveClass, 5000);
票数 2
EN

Stack Overflow用户

发布于 2011-04-26 19:50:43

下面是我的示例:)。

http://jsfiddle.net/8ByyN/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5789621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档