Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.02.2012, 19:57
Профессор
Отправить личное сообщение для Nanto Посмотреть профиль Найти все сообщения от Nanto
 
Регистрация: 21.12.2010
Сообщений: 243

замкнуть ротацию списка (jQ)
Надо сделать циклическую авторотацию блоков.
Вот "наваял" такой код:
$(document).ready(function(){
	var timevis = 2000;
	var delay = 500;
	var counter = $(".block").length;
	var a = 0;
	setInterval(function(){
	if (a > counter){$(".block").show(); a = 0;};/* как бы эти строки подсократить? */
	var astring = ".block:eq(" + a +")";
	if ((a + 1) > counter){$(".block").show(); a = -1;};/* как бы эти строки подсократить? */
	var bstring = ".block:eq(" + (a + 1) +")";
	if ((a + 2) > counter){$(".block").show(); a = -2;};/* как бы эти строки подсократить? */
	var cstring = ".block:eq(" + (a + 2) +")";
	$(astring).slideUp(delay);
	$(bstring).slideUp(delay);
	$(cstring).slideUp(delay);
	a += 3;
	}, timevis);
});


Проблема в том, что после каждого перебора набора элементов, смена "hide" происходит только после заданной паузы... Как таковой цикличной ротации нет.
Что тут можно сделать?
У меня в голове крутятся два варианта:
1) После каждой итерации удалять из DOM показанные элементы и динамически вставлять их в конец набора.
2) При превышении счётчика итераций "длины набора элементов" clearInterval с рекурсией на инициализацию setInterval. Но тут мне кажется вылезут косяки и будут "дёргания" анимации...
Ответить с цитированием
  #2 (permalink)  
Старый 03.02.2012, 13:24
Профессор
Отправить личное сообщение для Nanto Посмотреть профиль Найти все сообщения от Nanto
 
Регистрация: 21.12.2010
Сообщений: 243

Разобрался!
$(document).ready(function(){
	var timevis = 5000;
	var delay = 500;
	setInterval(function(){
	$(".block:lt(3)").slideUp(delay);
	setTimeout(function(){
		$(".block:lt(3)").remove().appendTo(".block_box");
		$(".block").show();
		}, delay);
	}, timevis);
});


Не учёл тот момент, что манипуляции с элементами начинаются уже тогда, пока ещё идёт анимация. Поэтому надо делать отложенное выполнение части скрипта.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие на динамически созданные элементы списка Arigato Events/DOM/Window 7 12.12.2011 09:28
Динамическое добавление выпадающего списка В IE stepennwolf Internet Explorer 3 04.11.2011 17:36
Заполнить список значениями из динамически созданного выпадающего списка zhuzha Элементы интерфейса 0 17.08.2010 14:40
Sortable, два связанных списка. Как один из них сделать неизменяемым? kvecxjo jQuery 1 30.03.2010 03:15
Динамическое обновление списка select (продолжение мытарств) macam Элементы интерфейса 2 25.06.2008 16:04