Показать сообщение отдельно
  #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.
Ответить с цитированием