setTimeout дает наложение скриптов
Доброго здоровьеца (с) Малахов
Из за функции setTimeout 2 скрипта накладываются друг на друга, а именно , каждая функция висит на клике на объект, при клике на {объект 1} используется fadeIn+setTimeout(fadeOut,500)+setTimeout(fadeIn,1 000). Так вот если кликнуть еще раз через 500 мс на {объект 2}, то запустится еще один такой же скрипт, пока работает этот, они наложатся друг на друга и получается каша, что делать? ![]() |
Ариан,
а зачем вам setTimeout ? может callback использовать в fadeIn и fadeOut |
Цитата:
fadeOut1(a,b); // функция анимированного пропадания элемента setTimeout(removeFadeOut, 500,a); // отчищаются все вспомогательные классы анимаций через 500мс setTimeout(slide, 500); // слайд на следующую картинку setTimeout(fadeIn1, 500,b);// появление другой инфы на картинке Возможно такое сделать на колбаке лучше? |
Цитата:
|
Ариан,
сделайте минимальный макет Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Цитата:
Вот, кое как перенес в кодепен, сделать простой макет будет довольно проблематично думаю, но если этот пример в кодепен будет не понятен я потружусь сделать более простой. Пока кое как готов только красный блок, на его примере и расскажу об ошибке. Если нажать на краснй блок то появятся кольца, при нажатии на кольца они исчезают и появляется блок с текстом и красной кнопкой для закрытия, если же нажать на кольцо, которое меняет цвет, а потом нажать сразу же на другое кольцо, то блок с тектом спешит появиться, но что-то тут идет не так и он исчезает. |
Хмммм
я только что понял что фишка не в setTimeout, потому что при некоторых обстоятельствах даже после 5 секунд выдает ошибку Это крайне странно, ошибка происходит только после нажатия на круг который меняет цвет toggleClass('buyed') в 108 строке, функция вызывается в 140 строке |
Ариан,
слишком много классов, может взять какой-то готовый аккардеон - слайдер? |
Цитата:
вырезал половину, напоминаю что рабочий только красный блок Тут код каресели маленький, внутри одного блока карусели весь код в основном |
Ариан,
мало чем могу помочь, но таймеры по времени никогда не совпадут с временем анимации , если использовать классы то ориентироватся на transitionend или animationend или все эфекты делать на jquery и тогда callback и stop |
Рони, тогда такой простенький вопрос, в jq как сделать так, что-бы
$('this').removeClass(b).addClass(a).fadeOut().removeClass(a); что-бы removeClass(a) было через 500 мс после fadeOut? Не знаешь случаем? Если бы у меня были 2 анимации подрят, например, $('this').fadeIn().fadeOut(); то тут можно delay в противном случае таймаут, как это сделать с помощью колбека? |
Цитата:
$(this).removeClass(b).addClass(a).fadeOut(500,function() { $(this).removeClass(a); } ) |
Цитата:
Я поищу в интернете про этот способ прописывать функцию как еще один аргумент. Очень помогло, хороший способ. |
Цитата:
В случае с fadeIn() все работает как надо, а вот fadeOut() не пашет, он не дает паузы. |
Проблема решена, была ошибка в коде.
Но вопрос отсрочки кода остается открытым, как это можно сделать кроме как setTimeout ? |
Гребаный отстой, все таки это работает.
$(this).removeClass(b).addClass(a).fadeOut(500,function() { $(this).removeClass(a); } ); |
Тихо сам с собойю я веду беседу))
|
$(this).removeClass(b).addClass(a).fadeOut(500,function() { $(this).removeClass(a); } ); Все-таки эта штука работает когда как хочет, иногда как надо, а иногда в своем порядке, например, параметр-функция срабатывает первая и потом уже сам фадеОут. Или был ли у кого опыт с такими ошибками, может ошибка где-то в другом месте косвенно дает не правильную работу fadeOut/fadeIn? |
Часовой пояс GMT +3, время: 22:22. |