2009-10-09 47 views
6

我開始學習jQuery。我編寫了一個代碼,它將通過調用存儲在數組中的函數來循環給定元素的位置。這此代碼工作正常:當動畫時取消設置css參數

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#right_column').css({zIndex:1000, position: 'absolute', right: 0, top:200 }); 
    $('body').css({overflow:'hidden'}); 
    var funcs = new Array(
        function(o){ 
         $(o).animate({right: 0, top:200}, 1000); 
        }, 
        function(o){ 
         $(o).animate({top: 0},1000); 
        }, 
        function(o){ 
         $(o).animate({right: 300},1000); 
        }, 
        function(o){ 
         $(o).animate({right: 300, top:200},1000); 
        } 
       ); 
    var flip=0; 
    $('#right_column').click(function self(){ 
      funcs[++flip % funcs.length]('#right_column'); 
    }); 
}); 
</script> 

,但如果我改變位置參數,這樣

var funcs = new Array(
        function(o){ 
         $(o).animate({right: 0, top:200}, 1000); 
        }, 
        function(o){ 
         $(o).animate({top: 0},1000); 
        }, 
        function(o){ 
         $(o).animate({left: 0},1000); 
        }, 
        function(o){ 
         $(o).animate({right: 300, bottom:0},1000); 
        } 
       ); 

它打破。

我假設互補參數(top top < - > bottom; left < - > right)會干擾,就像他們在普通的css中所做的一樣。

所以我的問題是:如何將css參數重置爲undefined?

編輯

animate似乎並不能夠處理auto可能。它沒有改變行爲。 與css()它的工作原理。

var funcs = new Array(
        function(o){ 
         $(o).css({right:0, bottom:0,left:'auto', top:'auto'}) 
         console.log('funcs 0'); 
        }, 
        function(o){ 
         $(o).css({top:0, right:0, left:'auto', bottom:'auto'}) 
         console.log('funcs 1'); 
        }, 
        function(o){ 
         $(o).css({left:0, top:0, right:'auto', bottom:'auto'}) 
         console.log('funcs 2'); 
        }, 
        function(o){ 
         $(o).css({right:'auto', top:'auto',left:0, bottom:0}) 
         console.log('funcs 3'); 
        } 
       ); 

css({...:'auto'})運行前/後animate()破壞動畫

任何其它提示(原因)?

回答

6

重置這些值並將其更改爲 '自動'

top: auto; 
left: auto; 
right: 0px; 
bottom: 0px; 

編輯:

您可以添加 「目標」。

<div id="top" style="position:absolute;left:0;top:0"></div> 
<div id="bottom" style="position:absolute;left:0;top:auto;bottom:0px"></div> 

現在你可以使用你的目標的值動畫:

$("#bottom").offset().top 
$("#bottom").offset().left 

動畫:

$(o).animate({ top : $("#bottom").offset().top, left : $("#bottom").offset().left }); 
+0

哦,很簡單:d我在心裏對複雜... – vikingosegundo 2009-10-09 13:33:35