Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Код в jQuery странно работает

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: аттрибут меняется через раз, почему
flisk
Отправлено: 03 Ноября, 2014 - 21:54:19
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Написал код, где объект движется влево (до конца страницы), потом меняется аттрибут src (т.е. картинка) и он движется назад. Если разбить это по двум функциям, все работает как надо:

CODE (htmlphp):
скопировать код в буфер обмена
  1. function right()
  2. {
  3. $('#fly').attr({"src":""});
  4. $('#fly').attr({"src":"samolet_l.jpg"});
  5. $('#fly').animate({left: $("body").width()},3000);
  6.  
  7. return;
  8. }
  9.  
  10. function left()
  11. {
  12. $('#fly').attr({"src":""});
  13. $('#fly').attr({"src":"samolet_r.jpg"});
  14. $('#fly').animate({left: 0},3000);
  15.  
  16. return;
  17. }


Работает, если вызывать функции вручную. Если же сделать что-то вида
CODE (htmlphp):
скопировать код в буфер обмена
  1. function...
  2. right();
  3. left();


Тогда аттрибут сменится сразу, т.е. не доходя до конца страницы. Все иное отработает нормально. Почему так? Где ошибка?

Вот демонстрация. http://fasm[dot]su/fly[dot]htm
 
 Top
dXdYdZ
Отправлено: 03 Ноября, 2014 - 22:17:29
Post Id


Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013  


Помог: 11 раз(а)




Почитайте описание функции animate (http://jquery-docs[dot]ru/effects/animate/ )
У неё есть четвёртый параметр - функция, которая вызывается по окончании анимации.
Вот в качестве этой функции и надо указывать функцию left, а не вызывать её сразу же за функцией right().
То есть получается так:
CODE (javascript):
скопировать код в буфер обмена
  1. $('#fly').animate({left: $("body").width()},3000,"linear",left);

И вызывать надо только функцию right(), функция left будет вызвана автоматически по окончании анимации в функции right().
Могу, конечно, ошибаться, так как мало работал с jquery, но по идее это делается именно так.
 
 Top
flisk
Отправлено: 03 Ноября, 2014 - 22:23:08
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




dXdYdZ
да, так работает. Большое спасибо!
 
 Top
flisk
Отправлено: 05 Ноября, 2014 - 21:12:03
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Еще вопрос. А как программно создать несколько одинаковых объектов? В плане - вот есть самолет, как создать программно несколько самолетов, чтобы они независимо друг от друга летали?
 
 Top
dXdYdZ
Отправлено: 05 Ноября, 2014 - 22:40:55
Post Id


Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013  


Помог: 11 раз(а)




Для этого надо клонировать соответствующий узел DOM столько раз, сколько нужно дополнительных самолётов и отдельно к каждому из этих узлов применить анимацию.

(Отредактировано автором: 05 Ноября, 2014 - 23:12:09)

 
 Top
Viper
Отправлено: 06 Ноября, 2014 - 08:10:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




flisk пишет:
А как программно создать несколько одинаковых объектов? В плане - вот есть самолет, как создать программно несколько самолетов, чтобы они независимо друг от друга летали?


http://api[dot]jquery[dot]com/clone/


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB