Jquery动画对象,然后根据新的margin-left创建其他对象

时间:2012-10-10 15:17:59

标签: jquery dynamic jquery-animate append margin

所以,我有一个可以动画的对象(让我们调用这个obj1)。其他对象可以在动画之前或之后动态创建,因此我希望它们的margin-left位置基于obj1的当前margin-left。

这是相关的代码片段。奇怪的是它适用于警报,但是如果我取出警报,则margin-left将默认为样式表中最初的警告。超时是为了确保在上一个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);
}

1 个答案:

答案 0 :(得分:0)

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

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

我希望这有帮助!