2013-09-10 4 views
0

Я хотел добавить класс в коллекцию элементов последовательно. Я нашел ответ here.Добавить класс в коллекцию элементов, последовательно начиная с последнего элемента

Для справки здесь код из этой статьи:

var i = 0; 
var callback; 

callback = function() { 
    if (i < article.length) { 
     $(article[i]).addClass('something'); 

     ++i; 
     setTimeout(callback, 10000); 
    } 
}; 

setTimeout(callback, 10000); 

Теперь я хотел бы, чтобы удалить класс, начиная с последнего элемента, так что в действительности в обратном порядке, что будет анимация.

Может ли кто-нибудь помочь? Спасибо заранее.

+0

так начинаются в длину минус один и вычитать и использовать removeClass – epascarello

ответ

2

Просто начните i, как article.length петли в другом направлении

var i = article.length; 
var callback; 

callback = function() { 
    if (i--) { 
     $(article[i]).removeClass('something'); 
     setTimeout(callback, 10000); 
    } 
}; 

setTimeout(callback, 10000); 
+0

Спасибо Павел! Я ценю помощь. – mtwallet

0

Для того, чтобы сделать обратный:

var i = article.length - 1; 
var callback; 

callback = function() { 
    if (i >= 0) { 
     $(article[i]).removeClass('something'); 

     --i; 
     setTimeout(callback, 10000); 
    } 
}; 

setTimeout(callback, 10000); 
+0

Это не удалит класс 'article [0]' –

+0

Да, это правда. –

+0

Он также попытается «$ (неопределенный) .removeClass (« что-то »);' потому что 'article [article.length]' будет _undefined_. –

1

Хотя метод setTimeout работает, JQuery предоставляет способ для достижения этой цели гораздо более элегантно:

$(".article").each(function() { 
    var d = $(this); 
    $("body").queue(function(next) { 
     d.addClass("foo"); 
     next(); 
    }).delay(200) 
}) 

Итерацию в обратном порядке д заказ, сначала добавьте этот маленький «плагин»:

$.fn.reverse = [].reverse; 

, а затем:

$(".article").reverse().each(function() { 
    var d = $(this); 
    $("body").queue(function(next) { 
     d.addClass("foo"); 
     next(); 
    }).delay(200) 
}) 
+0

Hi thg435. Спасибо за ответ, он действительно более изящный, но на этот раз я не использую jQuery. – mtwallet

+0

@mtwallet: так, '$' и 'addClass' в вашем посте из другой библиотеки? – georg

+0

Да, они и моя вина за то, что они не упоминают об этом в сообщении. Я использую ChocolateChipUI, у которого есть собственный jQuery, такой как синтаксис. Однако я часто использую jQuery, поэтому ваш ответ по-прежнему актуальен, и я тоже что-то узнал. Еще раз спасибо. – mtwallet