Как включить синхронное выполнение строк?
Есть вот такой код:
$(".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; }); Здесь можно увидеть, как работают сейчас эти спойлеры (потыкайте по разным заголовкам). Когда спойлер открывается, страница должна проскроллиться к его началу. Это работает, но зачастую скролл срабатывает до того, как полностью развернется спойлер. Из-за этого страница остается почти в том же положении, в каком была. Как я понимаю, это происходит из-за асинхронности выполнения строк кода. Как можно сделать так, чтобы скролл выполнялся ТОЛЬКО после того, как спойлер развернется или, по крайней мере, чтобы страница передвигалась синхронно со спойлером и оказывалась в его начале? |
у slideDown есть второй аргумент - он вам и нужен
|
Часовой пояс GMT +3, время: 04:06. |