Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Граница использования animate() (https://javascript.ru/forum/jquery/7994-granica-ispolzovaniya-animate.html)

Petka 02.03.2010 11:34

Граница использования animate()
 
Привет народ. Начал изучать jquery, и в связи с этим масса вопросов.

Использую animate для прокрутки списка фотографий. См. пример тут. Внизу списка фотографий есть кнопка для прокрутки списка.
Столкнулся с вопросом, как сделать ограничение на прокрутку, т.е. не прокручивать, когда фотографии закончились??

Я конечно могу подсчитать кол-во фотографий, и после нажатия определенного количества раз на кнопку прокрутки делать ее неактивной. Но думается мне, что есть более ровный метод, используя возможности самого jQuery?

micscr 02.03.2010 12:06

Возможно как-то так:
$("#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");
      }    
    });

Petka 02.03.2010 12:35

о, круто, спасибо. Еще доделал, чтобы в обратную сторону листалось, а h0 устанавливалось из стиля.

Только такой глюк, если быстро нажимать на стрелку, то оно проскочит потом дальше чем надо. Как-то можно лочить кнопку, до окончания выполнения эффекта?

micscr 02.03.2010 15:19

конечно можно, выставляй флаг при начале анимации и сбрасывай при окончании.

Petka 02.03.2010 15:28

Цитата:

Сообщение от micscr (Сообщение 46535)
конечно можно, выставляй флаг при начале анимации и сбрасывай при окончании.

Можешь привести пример? Или укажи плиз в какую сторону копать?

micscr 02.03.2010 15:33

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;});
      }   
    });

Petka 02.03.2010 15:51

Круто, спасибо.


Часовой пояс GMT +3, время: 11:46.