我开始学习jQuery。我编写了一个代码,它将通过调用存储在数组中的函数来循环给定元素的位置。这适用于此代码:
<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);
}
);
它打破了。
我假设补充参数(顶部&lt; - &gt;底部;左&lt; - &gt;右)干扰,就像在普通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()
销毁(原因)动画
任何其他提示?
答案 0 :(得分: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 });