Я использую .animate(), чтобы плавно переместить несколько divs после того, как они были видны через .show («slow»). Поскольку divs может или не может выполнять анимацию, я также использую .queue(), чтобы убедиться, что этот шаг происходит после завершения анимации.Проблема с jQuery's .animate()
Задача: .animate() не работает. Он попадает в правильную строку кода, но ничего не делает и не вызывает никаких ошибок. Помогите?
Javascript:
function arrange_sections() {
var margin = 20;
var left = margin;
$(".section.active").queue(function() {
$(".section.active").each(function() {
$(this).animate({ "left": left }, "slow");
left += $(this).width() + margin;
});
});
}
CSS:
(я использую шоу ("Медленный"), чтобы привести разделы из дисплея: нет)
.section {
display: none;
position: absolute;
top: 5%;
left: 5%;
padding: 20px;
z-index: 20;
}
Если «.секция» и «.активные» классы имеют пространство между ними .section .active '). Другими словами: вы проверили, что запрос css-запроса находит нужные элементы? Вы также можете назначить результат $ ('. Section.active') переменной вместо создания объектов дважды. –
Я имею в виду выбрать пересечение .section и .active, так что да, отсутствие пробела верное. Используя Firebug, я определил, что он попадает в строку .animate(), и если я заменю строку .animate() другой функцией, например .css(), она отлично работает. – asmodi
Алекси - вы были правы в создании $ ('. Section.active') дважды. Первоначально у меня было «$ (это)», но изменил его мышление (по какой-то причине), что queue() повлияет только на первый объект, если было выбрано более одного объекта. На самом деле я непреднамеренно заставил мою функцию называться больше, чем я хотел! – asmodi