2013-03-18 103 views
2

不能完全确定我的逻辑为这一个:过了漫长的一天。基本上,我有一张图片列表,我需要在每次重复添加一个类并每次清除类时运行。jquery通过元素列表添加和删除类的顺序

所以这就是:

添加类,暂停,删除类,重复下一次,如果最后去第一

这里是我得到了什么,它不工作:

ul.find('.frame').each(function(){ 

    var thiis = $(this); 

    thiis.addClass('showing'); 

    setTimeout(function(){ 
     thiis.removeClass('showing'); 
    }, 1000); 
}); 
+0

因为你'each'循环内添加它。 – 2013-03-18 03:55:01

+0

@DipeshParmar是否会以某种方式清空超时?你是否有建议使用替代技术或任何文件说明为什么它不起作用? – technopeasant 2013-03-18 03:56:31

+0

@ahren显然我不知道 – technopeasant 2013-03-18 04:02:09

回答

2
var $f = $('ul').find('.frame'); 

function recursive(i) { 
    $f.removeClass('showing').eq(i).addClass('showing'); 
    setTimeout(function() { 
     recursive(++i % $f.length) 
    }, 1000); 
} 
recursive(0); 

http://jsfiddle.net/Wja4r/

1

我认为你想setInterval - 重复,直到你清除它。

var $items = $('.frame'), 
    delay = 1000; 
    $items.first().addClass('showing'); 

setInterval(function(){ 
    var $current = $items.filter('.showing'), 
     $next = $current.next().length ? $current.next() : $items.first(); 

    $current.removeClass('showing'); 
    $next.addClass('showing'); 
}, delay); 

DEMO:http://jsfiddle.net/PELjq/2/