用jquery动画-offset.left不更新

| 我正在尝试在屏幕上以多个步骤为对象设置动画,直到它到达其目标为止。但是,offset.left值不会动态更改(或者我做错了,很有可能)。 这就是我所拥有的
var initialOffset = $(\'#puzzle-transition-object\').offset(); //thing to move
var terminalOffset = $(\'#puzzle-container\').offset(); //thing to touch
var dtt = terminalOffset.left - initialOffset.left; //distance to travel
var stepSegment = \"+=\" + Math.ceil(dtt/8) + \"px\"; //in left: css format

function bringOutTheDiv(){
  var currentDivPosition = $(\'#puzzle-transition-object\').offset();
  if(currentDivPosition.left < terminalOffset.left){
     console.log(\"current position\"+currentDivPosition.left+\": \"+terminalOffset.left);
     takeAStep(); 
  }
}

function takeAStep(){
    $(\'#puzzle-transition-object\').animate({
      left: stepSegment,
    }, {
      duration: 50,
      complete: function() {
      //console.log(\"completed a step\");
      }
    });
    bringOutTheDiv();
}
我确实在一个while循环中使用了它,但是将其分解为另一个函数。基本上,currentDivPosition.left不会更新,并且我会得到一个堆栈溢出错误,尽管div确实一直在屏幕上移动。 谢谢!     
已邀请:
        看来您应该这样做:
var initialOffset = $(\'#puzzle-transition-object\').offset(); //thing to move
var terminalOffset = $(\'#puzzle-container\').offset(); //thing to touch
var dtt = terminalOffset.left - initialOffset.left; //distance to travel
var stepSegment = \"+=\" + Math.ceil(dtt/8) + \"px\"; //in left: css format

function bringOutTheDiv(){
  var currentDivPosition = $(\'#puzzle-transition-object\').offset();
  if(currentDivPosition.left < terminalOffset.left){
     console.log(\"current position\"+currentDivPosition.left+\": \"+terminalOffset.left);
     takeAStep(); 
  }
}

function takeAStep(){
    $(\'#puzzle-transition-object\').animate({
      left: stepSegment,
    }, {
      duration: 50,
      complete: function() {
      //console.log(\"completed a step\");
      bringOutTheDiv();
      }
    });
}
让您在回叫内循环通话-应该有所帮助:)     

要回复问题请先登录注册