У меня есть ряд элементов, которые я хочу последовательно переключать внутри и снаружи. Я использую <button class="toggle">
для управления этим:Задержка() не работает, как ожидалось, внутри каждого цикла() jQuery
$('.toggle').click(function(){
$('.squares span').each(function(index){
$(this).delay(600*index+1).toggleClass('hide');
});
});
jsFiddle: http://jsfiddle.net/r2vk7L5b/
Оказывается, что метод delay()
просто игнорируется в этом цикле. Переменная index
передается так же, как ожидалось. Вы можете отключить его, чтобы увидеть его как 0,1,2,3 и т. Д.
Что я здесь не понимаю о методе each()
или delay()
?
'.delay()' работает только для очередей анимации. '.toggleClass()' не создает его. Использовать старый добрый 'setTimeout()', возможно? Кроме того, помните приоритет в базовой арифметике: умножение происходит до добавления. Вы должны использовать '600 * (index + 1)', а не '600 * index + 1'. – Terry
Итак, у меня сложилось впечатление, что задержка не складывается, поэтому она переходит прямо к следующему вызову функции. Вот несколько стратегий для обходных решений. http://www.mattlunn.me.uk/blog/2012/06/jquery-delay-not-working-for-you/ –