Граница использования 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, время: 02:36. |