jquery循环 - 添加然后删除css类 - 无限循环

时间:2012-10-03 08:39:20

标签: javascript jquery loops cycle infinite

如何使用jQuery无限添加然后删除一组4个li上的CSS类。

基本上,请看这个简单的小提琴(没有任何jquery):http://jsfiddle.net/kHsvN/

我想循环通过方框来改变盒子的css,翻回原来的css,然后继续下一个等等......

任何帮助表示赞赏!

4 个答案:

答案 0 :(得分:2)

$(document).ready(function() {
   window.setInterval(function() {
        $("#topboxesmenu li a").each(function() {
            $(this).css("background", get_random_color());
    });
  }, 1000);
});

function get_random_color() {
   var letters = '0123456789ABCDEF'.split('');
   var color = '#';
   for (var i = 0; i < 6; i++ ) {
     color += letters[Math.round(Math.random() * 15)];
   }
   return color;
}

此示例使用随机颜色,但可以轻松更改为.addClass()部分中的.each

JS Fiddle(实例)

http://jsfiddle.net/kHsvN/6/

Random color generator in JavaScript

答案 1 :(得分:1)

你可以试试这个

CSS 对于当前项目,要添加/删除的类

ul#topboxesmenu li a.current{ background:black }

<强> JS

$('#topboxesmenu li a').each(function(i){
    var t=$(this);
    setTimeout(function(){
        t.addClass('current');
        setTimeout(function(){
            t.removeClass('current');
        }, 1000);
    }, 1100*i);
});

DEMO

更新:用于连续循环

$(function(){
    loopIt();
});

function loopIt(){    
    $('#topboxesmenu li a').each(function(i){
        var t=$(this);
        setTimeout(function(){
            t.addClass('current');
                setTimeout(function(){
                    t.removeClass('current');
                    if(i==$('#topboxesmenu li a').length-1) loopIt();;
                }, 1000);
        }, 1100*i);
    });
}

DEMO

答案 2 :(得分:1)

试试这个:

jQuery(document).ready(function() {
    window.setInterval(function() {
            var oldBox = jQuery('#topboxesmenu li.active');
            if(oldBox.length == 0 || oldBox.next().length == 0)
            {
                    oldBox.removeClass('active');
                jQuery('#topboxesmenu li:first-child').addClass('active');
            }
            else
                oldBox.removeClass('active').next().addClass('active');
    },2000);
});

它将循环显示框,一个接一个地向它们添加活动类。

http://jsfiddle.net/gKEmL/

答案 3 :(得分:0)

我认为这样做是你想要的:

el = $('#topboxesmenu li:first-child');
setInterval(function() {
    el = window.el;
    el.siblings().children('a').css('background','#ff0000');
    el.children('a').css('background-color', 'blue');
    el = el.next().length ? el.next() : el.parent().children('li:first-child');
}, 1000);​

请参阅working demo

<强>更新
关于您的测试页无效,您在身体标记之外使用了javascript,请尝试将</body>标记放在</html>标记之前。你现在有这个:

</body>

<script type="text/javascript" ....
...
...
</html>

更新2
你的jquery脚本标签:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script>

应放在您网页的<head>内,而不是您当前拥有该网页的正文。