@Stels007

Почему не работает код на jQuery?

Здравствуйте! Помогите разобраться. К сожалению, в проект, где возникла данная проблема скинуть не могу, он слишком большой и ресурсы разбросаны, но суть такова: я добавляю к элементу новый класс и задаю ему анимацию. Анимация работает, т.е. она меняет позицию картинки, но не осуществляет заданной задержки времени.

$("#bg1").parent().addClass("bg3").stop().animate({backgroundPosition:"(0 0)"},200);


Просто моментально меняется позиция не выполняя задержку в 200 млс! Прошу помощи, может кто сталкивался?

P.S.
Попробую более наглядно пояснить, что я пытаюсь сделать.

<div id="menuWrapper" class="menuWrapper bg1">
  	<ul class="menu" id="menu">
  		<li class="bg1" style="background-position:0 0;">
  			<a id="bg1" href="#">Our Passion</a>
  			<ul class="sub1" style="background-position:0 0;">
  				<li><a href="#">Submenu 1</a></li>
  				<li><a href="#">Submenu 2</a></li>
  				<li><a href="#">Submenu 3</a></li>
  			</ul>
  		</li>
  		<li class="bg1" style="background-position:-266px 0px;">
  			<a id="bg2" href="#">Our Brands</a>
  			<ul class="sub2" style="background-position:-266px 0;">
  				<li><a href="#">Submenu 1</a></li>
  				<li><a href="#">Submenu 2</a></li>
  				<li><a href="#">Submenu 3</a></li>
  			</ul>
  		</li>
  		<li class="last bg1" style="background-position:-532px 0px;">
  			<a id="bg3" href="#">Contact</a>
  			<ul class="sub3" style="background-position:-266px 0;">
  				<li><a href="#">Submenu 1</a></li>
  				<li><a href="#">Submenu 2</a></li>
  				<li><a href="#">Submenu 3</a></li>
  			</ul>
  		</li>
  	</ul>
  </div>


.bg1{
    background-image: url(images/1.jpg);
}
.bg2{
    background-image: url(images/2.jpg);
}
.bg3{
    background-image: url(images/3.jpg);
}


Собственно, вот. Мне приходится под #bg1 #bg2 и #bg3 подставлять .bg1 .bg2 и .bg3 соответственно. Картинка заменятся да, но мне нужно чтобы она аннимированно заменялась, а не моментально! И не понятно почему картинка то меняется, а duration: 200 не хочет работать?
  • Вопрос задан
  • 290 просмотров
Пригласить эксперта
Ответы на вопрос 2
boratsagdiev
@boratsagdiev
Так 200 у вас - это duration, продолжительность анимации, а не задержка.

Попробуйте добавить метод delay:
$("#bg1").parent().addClass("bg3").stop().delay(1000).animate({backgroundPosition:"(0 0)"},200);


(не спец в методах jquery, может его надо добавить после .stop())

UPD: самофикс, да, надо после .stop(). Сделал пример.
Ответ написан
Exploding
@Exploding
wtf?
Если Вы добавляете класс к элементу, зачем же юзать jq animate?? В css всю анимацию и задержки вынесите, а в jq оставьте только toggleClass да и все
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы