Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.04.2012, 13:54
Аспирант
Отправить личное сообщение для SkaN Посмотреть профиль Найти все сообщения от SkaN
 
Регистрация: 27.08.2011
Сообщений: 50

Как включить синхронное выполнение строк?
Есть вот такой код:
$(".spoiler").click(function() {
	$(".spoiler").each(function() {
		if ($(this).next().is(":visible") == true) {$(this).next().slideUp("slow");}
	});
	switch ($(this).next().is(":hidden")) {
		case true:
			$(this).next().slideDown("slow");
			var offset = $(this).offset();
			var height = $(this).outerHeight(true);
			$("body, html").animate({scrollTop: (offset.top - height)}, "slow");
			break;
		case false:
			$(this).next().slideUp("slow");
			break;
	}
	return false;
});

Здесь можно увидеть, как работают сейчас эти спойлеры (потыкайте по разным заголовкам). Когда спойлер открывается, страница должна проскроллиться к его началу. Это работает, но зачастую скролл срабатывает до того, как полностью развернется спойлер. Из-за этого страница остается почти в том же положении, в каком была.
Как я понимаю, это происходит из-за асинхронности выполнения строк кода. Как можно сделать так, чтобы скролл выполнялся ТОЛЬКО после того, как спойлер развернется или, по крайней мере, чтобы страница передвигалась синхронно со спойлером и оказывалась в его начале?
Ответить с цитированием
  #2 (permalink)  
Старый 26.04.2012, 22:28
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

у slideDown есть второй аргумент - он вам и нужен
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20
Как "подождать" выполнение асинхронного запроса? WalterScott AJAX и COMET 25 05.06.2009 12:18
как прекратить выполнение скрипта ? kefi Общие вопросы Javascript 3 31.03.2009 19:05
Как разрешить выполнение activeX Marcus74 Internet Explorer 2 26.02.2009 07:38
Как приостановить выполнение цикла? SashaBorandi jQuery 3 13.02.2009 08:57