jQuery position()。左边总是=== 0动画后marginLeft' - = 300px'

时间:2012-12-29 11:50:56

标签: javascript jquery jquery-animate position

现在这让我疯了!我想使用 - margin设置元素'left'的动画。但是,一旦显示了所有子元素,我还想在相反方向上设置相同元素的动画。我的脚本不是那么简单但相似:

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。如果变量'should'为负数,则它总是返回0.我可以很容易地计算出我希望动画向相反方向前进的位置,但如果条件不是负数,则不会再起作用。< / p>

我非常感谢为什么margin-leftposition().left总是返回0而不是-1000或其他什么。但如果你有另一种解决方案,我仍然会很开心:)

1 个答案:

答案 0 :(得分:3)

jQuery的CSS margin-left将返回一个字符串,如:20px你需要使用

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

所以它应该是:

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中指定的元素的动画应用动画,这意味着:确保在样式表中为元素的边距设置一个值 - 你计划的左边动画。