2012-12-29 106 views
1

这现在让我疯了!我想使用边距为元素“左”设置动画。但是我也想在所有的子元素都显示出来后,让相同的元素在相反的方向上动画。我的脚本并不简单,但类似:jQuery position()。动画后left always === 0 marginLeft' - = 300px'

timer = setInterval(function(){ 
    var direction = ($('ul','.column').css('margin-left') <= 0)? '-=': '+='; 
    $('ul','.column').animate({marginLeft:direction+($('li','.column').width())+'px'},500); 
},1000); 

我也试过$('ul,'.column').position().left <=0而不是上述条件。我的问题是margin-leftposition().left永远不会返回一个负面变量:S。如果变量'应该'为负数,它总是返回0.我可以很容易地计算出我希望动画在相反方向走向的位置,但是如果条件不是负数,则不会起作用。

我非常感谢一些洞察力,为什么margin-leftposition().left总是返回为0而不是-1000或其他。但是,如果你有一个替代的解决方案我仍然是那样幸福:)

+0

@roXon我的坏大声笑 – sourRaspberri

+0

P.S如果你使用更新的jQuery库,你不需要更多'px'。 –

回答

3

jQuery的CSS利润率左像将返回一个字符串:20px你需要摆脱使用

parseInt($('ul','.column').css('margin-left') , 10) 

的“PX”的因此,它应该是:

timer = setInterval(function(){ 
    var margLeft = parseInt($('ul','.column').css('margin-left') , 10); 
    var direction = margLeft<=0 ? '-=': '+='; 
    $('ul','.column').animate({ marginLeft: direction+($('li','.column').width()) },500); 
},1000); 

如果我记得很清楚的Chrome有一些问题动画已经不是CSS里面指定的属性应用动画元素,这意味着:请确保您的样式表来设定的值对于元素的边距,您计划使用动画即

+0

非常感谢罗克森。这真是让我生气了!大声笑 – sourRaspberri

+1

@Beneto下次不要开车疯了,早点来这里。 *“不知道是不是羞耻,羞愧是不问。”* :) –

+0

会做配偶:)再次感谢。 – sourRaspberri