Вместо одновременной установки всех действий со все более длительными периодами ожидания, другой подход состоит в том, чтобы привязать поведение показа непосредственно к каждому выбранному элементу как пользовательское событие и включить в эту связанную функцию фиксированный период ожидания плюс вызов триггера.пользовательское событие «следующего» элемента, если оно присутствует.Чтобы начать, просто зажгите предохранитель первого элемента.
Итак, что-то вроде этого:
var fadeCascade = function fadeCascade(your_selector, props) {
props = props || {};
props.delay = props.delay || 1; // s
props.speed = props.speed || 2000; // ms
props.ease = props.ease || 'linear';
$(your_selector)
.addClass('showme') // Being a little lazy here, but it works
// You could work out an inspection by attached event
.bind('showme', function() { // custom event
$(this)
.delay( props.delay * 1000 )
.fadeIn(props.speed, props.ease, function() {
$(this).nextAll('.showme:first').trigger('showme'); // jqueryish recursion
});
}).hide() // or just hide in initial css
.first().trigger('showme'); // set the dominoes falling
};
И для запуска откройте:
fadeCascade('div.bar');
Если вас беспокоит гигиена, вы можете отменить привязку событий и удалить классы по ходу работы.
Пример: http://jsfiddle.net/redler/EKx6s/1/
Обновление: добавлена задержка, спасибо @ Александр.