Граница использования animate()
Привет народ. Начал изучать jquery, и в связи с этим масса вопросов.
Использую animate для прокрутки списка фотографий. См. пример тут. Внизу списка фотографий есть кнопка для прокрутки списка. Столкнулся с вопросом, как сделать ограничение на прокрутку, т.е. не прокручивать, когда фотографии закончились?? Я конечно могу подсчитать кол-во фотографий, и после нажатия определенного количества раз на кнопку прокрутки делать ее неактивной. Но думается мне, что есть более ровный метод, используя возможности самого jQuery? |
Возможно как-то так:
$("#photo_preview_down").click(function(){ $inner = $(".photo_preview_inner"); var top = $inner.position().top; // смещение вверх var height = $inner.height(); // высота блока с фотками var h0 = 436; // высота контейнера (для примера тут значением а вообще вычислять где то заранее глобально) if (height + top > h0) { $inner.animate({"top": "-=109px"}, "normal"); } }); |
о, круто, спасибо. Еще доделал, чтобы в обратную сторону листалось, а h0 устанавливалось из стиля.
Только такой глюк, если быстро нажимать на стрелку, то оно проскочит потом дальше чем надо. Как-то можно лочить кнопку, до окончания выполнения эффекта? |
конечно можно, выставляй флаг при начале анимации и сбрасывай при окончании.
|
Цитата:
|
var flag = true; // можно нажимать $("#photo_preview_down").click(function(){ if (!flag) return; $inner = $(".photo_preview_inner"); var top = $inner.position().top; // смещение вверх var height = $inner.height(); // высота блока с фотками var h0 = 436; // высота контейнера (для примера тут значением а вообще вычислять где то заранее глобально) if (height + top > h0) { flag = false; // нельзя нажимать $inner.animate({"top": "-=109px"}, "normal", function(){flag = true;}); } }); |
Круто, спасибо.
|
Часовой пояс GMT +3, время: 05:10. |