Запретить анимацию, если элемент, если элемент не находится в определенной позиции - PullRequest
0 голосов
/ 26 июня 2011

Я пытаюсь предотвратить запуск анимации, если контейнер div, #opts, не находится в указанной "левой" позиции.

Я пробовал методы .offset () и .position (), но безрезультатно. Элементы продолжают перемещаться вправо или влево (в зависимости от того, какая «вкладка» видна и нажата), независимо от того, какова «левая» позиция.

На этой тестовой странице я замедлил анимацию, чтобы вы могли попробовать ее сами ... просто нажмите "текстовую вкладку" в левом верхнем углу несколько раз между анимация начинается и заканчивается, и она будет продолжать двигаться вправо / влево, независимо от своей левой позиции.

JS:

$( "#optsdiv" ).hide();
$( "#closediv" ).hide();
var p = $( "#opts" );
var offset = p.offset();

if( offset.left == 0 )
  $( "#opendiv" ).click( function() {
    $( "#opts" ).animate( { left: "+=100px", opacity: 1 }, 1400, "easeOutExpo", function() {
       $( "#opendiv" ).hide();
       $( "#closediv" ).show();
      });
  });

if( offset.left == 100 )    
  $( "#closediv" ).click( function() {
    $( "#opts" ).animate( { left: "-=100px", opacity: 0.6 }, 1400, "easeOutExpo", function() {
      $( "#closediv" ).hide();
      $( "#opendiv" ).show();
     });
  });

Есть идеи о том, что я делаю неправильно, или о лучшем способе предотвращения анимации, чтобы переместить вкладку за экран полностью или слишком далеко вправо?

1 Ответ

1 голос
/ 26 июня 2011

Попробуйте использовать left: "100px" и left: "0px" вместо +=100px и -=100px

Таким образом, вы анимируете определенные позиции вместо того, чтобы добавлять или вычитать из текущей позиции.

...