所以,我有一个可以动画的对象(让我们调用这个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);
}
答案 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
});
我希望这有帮助!