0

所以,我有一个可以动画的对象(我们称之为 obj1)。其他对象可以在动画之前或之后动态创建,所以我希望它们的左边距位置基于 obj1 当前的左边距。

这是相关的代码片段。奇怪的是它与警报一起使用,但如果我取出警报,margin-left 将默认为样式表中的原始内容。Timeout 是为了确保在前一个 obj 完成动画到它的新位置之前不会创建新的 obj。

if(!rounds.match12) {
    setTimeout(function() {
    createMatchup(matchups[6].winner, matchups[7].winner, 12, false); //this creates a new matchup and appendsTo current container
    var pos = $('#matchup5').css('margin-left');
    alert(pos);
    $('#matchup12').css('margin-left' , pos);
    alert($('#matchup12').css('margin-left'));
    $('#matchup12').css('margin-left' , '-=195');
    alert($('#matchup12').css('margin-left'));
    rounds.match12 = true;
    },1500);
}
4

1 回答 1

0

如果没有看到完整的代码,我的猜测是您的超时很可能不会与动画同步触发。jQuery 动画并不总是准确的,它和你的超时时间之间存在毫秒的差异,它可能会失败或提供不一致的值。尝试使用$.animate()回调而不是超时,如下所示:

// replace 'fast' with a millisecond timeout if desired //
$('selector').animate(marginLeft: 'X', 'fast', function(){
    // dynamically create and position new elements here
});

我希望这有帮助!

于 2012-10-10T15:44:29.903 回答