jQuery bind unbind анимация

Я сделал этот кусок кода, я пытаюсь анимировать блок текста /div вперед и назад, но почему это работает только в первый раз для функции "placeRight"? Что-то не так с right : "+=750" атрибут?

$(document).ready( function ( ) {
   $("#text").click(placeRight);
});   

    var placeRight = function() {     
      $("#text").animate( { right :  "+=750" }, 1300); 
      $("#text").unbind("click"); 
      $("#text").click(placeLeft);
    }

    var placeLeft = function() {     
      $("#text").animate( { left :  "+=750" }, 1300); 
      $("#text").unbind("click");
      $("#text").click(placeRight);
    }

3 ответа

Решение

Да, у вас есть двойное время $("#text").animate( { left : "+=750" }, 1300);
так что вы всегда пытаетесь поместить его в положение +750px

изменить это так

$(document).ready( function ( ) {
   $("#text").click(placeRight);
});   

var placeRight = function() {     
  $("#text").animate( { right :  "+=750" }, 1300);
  $("#text").unbind("click"); 
  $("#text").click(placeLeft);
}

var placeLeft = function() {     
  $("#text").animate( { left :  "-=750" }, 1300); //or { right: 0 }
  $("#text").unbind("click");
  $("#text").click(placeRight);
}

Вы можете сделать это с меньшим количеством кода. Вот рабочая демонстрация: http://jsfiddle.net/kkZtD/1/

Попробуй это:

$(document).ready(function(){
   $("#text").click(function(){
      $(this).animate({ right: "+=750" }, 1300).animate({ left: "0" }, 1300);
   });
});
Другие вопросы по тегам