Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.01.2012, 11:06
Новичок на форуме
Отправить личное сообщение для xyzdsnxyz Посмотреть профиль Найти все сообщения от xyzdsnxyz
 
Регистрация: 20.01.2012
Сообщений: 2

как перебрать элементы списка с задержкой
Подскажите плиз, у меня такая задача: есть select, нужно, вывести каждый элемент списка с определенной задержкой. как это сделать?
function Btn_start()
{
	$('#f1 option').each(function(){
		$("#start_txt").append("<div><b>"+this.text+"</b></div>").delay(2000).fadeIn(); // этот кусок кода не работает
	});
}


вернее он выводит все, но без задержки и сразу!
Ответить с цитированием
  #2 (permalink)  
Старый 20.01.2012, 11:14
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

для fadeIn можно задавать время появления и колбэк, который срабатывает после окончательного появления элемента
http://api.jquery.com/fadeIn/

так что вам надо написать рекурсивный метод, который будет внутри колбэка вызывать себя же, но для следующего элемента, пока не закончатся элементы
__________________
readOnly
Ответить с цитированием
  #3 (permalink)  
Старый 20.01.2012, 11:32
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от xyzdsnxyz Посмотреть сообщение
вернее он выводит все, но без задержки и сразу!
дык вы все элементы будете показывать через 2 секунды. вам надо выдерживать интервал между ними, значит - как минимум, устанавливать время в зависимости от еткущего элемента.
function Btn_start() {
        var i = 1; // начнём с 2 сек.
	$('#f1 option').each(function(){
		$("#start_txt").append("<div><b>"+this.text+"</b></div>").delay(i++*2000).fadeIn();
	});
}

i++*2000 при каждом обращении умножает текущее i на 2000, возвращает результат и увеличивает i на 1.
так что и необязательно тут сри курсией делать.

но первый вариант, на мой взгляд, не идеален. дело в том, что jquery при each передаёт в функцию первым аргументом индекс текущего элемента.

так что внедрять переменную i вовсе и не нужно.
function Btn_start() {
	$('#f1 option').each(function(index){
		$("#start_txt").append("<div><b>"+this.text+"</b></div>").delay(++index*2000).fadeIn();
	});
}

++index*2000 при обращении сначала увеличит index на 1, а потом умножит увеличенный на 2000. сделано это потому, что нумерация элементов в jquery (да и вообще,в массивах) начинается с нуля, а первый элемент (нулевой, т.е.) должен появиться с задержкой в 2000, поэтому мы увеличиваем его номер на 1.

Последний раз редактировалось melky, 20.01.2012 в 11:37.
Ответить с цитированием
  #4 (permalink)  
Старый 20.01.2012, 11:42
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Сообщение от xyzdsnxyz
Подскажите плиз, у меня такая задача: есть select, нужно, вывести каждый элемент списка с определенной задержкой. как это сделать?
можно просто setInterval или setTimeout использовать

<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<title>demo</title>
	<script type='text/javascript' src='http://code.jquery.com/jquery-git.js'></script>
	<script>
		$(function(){
		var jOpt = $('option'),
			len = jOpt.length,
			i = 0,
			delay = 2000,
			intervalId = setInterval(function () {
				if (i < len) {
					$('<div>' + jOpt.eq(i).text() + '</div>').appendTo(document.body).hide().fadeIn(delay);
					i += 1;
				} else {
					clearInterval(intervalId);
				}
			}, delay);
		});
	</script>
</head>
<body>
	<select>
		<option>111</option>
		<option>222</option>
		<option>333</option>  
	</select>
</body>
</html>

Последний раз редактировалось Pavel M., 06.04.2012 в 15:26.
Ответить с цитированием
  #5 (permalink)  
Старый 20.01.2012, 12:41
Новичок на форуме
Отправить личное сообщение для xyzdsnxyz Посмотреть профиль Найти все сообщения от xyzdsnxyz
 
Регистрация: 20.01.2012
Сообщений: 2

Большое Вам спасибо - вы мне очень помогли!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заменить эл-ты одного списка эл-тами другого ? Mayar Элементы интерфейса 5 28.04.2009 11:21
Как поменять местами элементы в дереве элемента родителя? rar11 Events/DOM/Window 8 01.04.2009 18:53
Как удалить все пустые элементы UL smashercosmo Events/DOM/Window 13 25.02.2009 09:03
Как выполнить функцию с задержкой? AlexMak Events/DOM/Window 6 11.12.2008 11:53
Динамическое обновление списка select (продолжение мытарств) macam Элементы интерфейса 2 25.06.2008 16:04