помогите разобраться с .animation
ребят, реализовал галерейку на jquery. Фотки сменяются по нажатию стрелок на клавиатуре либо по нажатию кнопок мышкой. Смена выполняется при помощи .animate с заданием свойства margin-left. Но столкнулся с проблемой: если кто-то клацнет подряд 2 раза, то весь скрипт портится... т.к. фотка листнулась наполовину а мы ее еще раз. и получится что-то типа:
![]() Как это исправить? Чтоб по нажатию и вызову события еще раз мы ждали, пока закончится событие, которое уже выполняется? Ссылка, чтоб протестировать этот баг: вот |
удаляйте событие на кнопке на время animate.
или используй .one(... и при калбаке animate опять определяй событие через .one(... |
А возможности поставить в очередь на выполнение - такого не существует? И по .one вопрос тоже тогда. Я вызываю у себя функции так:
$(..).live("click",function(){}); Будет ли работать .one с динамически создающимися элементами DOM? |
я про события на стрелках
|
на стрелках я лишь еще раз вызываю функции, которые у меня на кнопках:
$(document).keyup(function(e){ if (e.keyCode==27) $("#for-galery").empty(); if (e.keyCode==39) $(".next").trigger("click"); if (e.keyCode==37) $(".prev").trigger("click"); }); |
сделал все при помощи глобальной переменной flag:
if (flag==0){ flag = 1; $("#element").animate({},"normal",function(){ flag = 0; }); } Все работает... Есть ли более элегантное решение? |
InviS,
Ну для этого я думаю придётся многое переделать:) Хотя может это только я так думаю, код не смотрел. |
if ($("#element:animated").size()) return; - пока идет анимация, ничего не делать
|
пасиб, попробую
|
Часовой пояс GMT +3, время: 04:45. |