jQuery animate () повторяется 3 раза - PullRequest
2 голосов
/ 07 марта 2011

Я пытаюсь сделать трехэтапную анимацию, когда открытое окно сводится к минимуму, все они сдвигаются влево, а поле, на которое нажали, расширяется.Последняя анимация, выбранный блок расширяется, повторяется 3 раза, когда он вызывается в качестве аргумента 2-й анимации, но если я вызываю его один, он работает нормально..org / xbox /

$("#box2").click(
    function(){
      box = 2;
      if(boxopen==box)return;
      $("#box"+boxopen).animate({height:"-=30%", width:"-=10%", top:"+=20%", fontSize:"14px"}, 500, null,
      function(){
        $("section").animate({right:"+=25%"},500,null,
        function(){
          $("#box"+box).animate({height:"+=30%", width:"+=10%", top:"-=20%"}, 500);
          $("#box"+boxopen).css("z-index", "8");
          $("#box"+box).css("z-level", "9");
          boxopen = box;
        });
      });
    });

Ответы [ 2 ]

1 голос
/ 07 марта 2011

Я не знаю, как выглядит ваш HTML, но, возможно, ваш клик пузырится на другие элементы и вызывает такое поведение.Чтобы предотвратить это, используйте stopPropagation()

EX:

$("#box2").click(
    function(e){
      e.stopPropagation();
      box = 2;
      .....
0 голосов
/ 07 марта 2011

Я думаю, что вы ищете jQuery#stop(), который останавливает любую текущую анимацию на соответствующих элементах.Попробуйте позвонить .stop() перед использованием .animate(), например:

// instead of:
$('section').animate(…);
// try this:
$('section').stop().animate(…);
...