【发布时间】:2010-02-10 20:20:14
【问题描述】:
如果我有<div id="curve" style="position:relative; height:100px; width:100px; />
如何让它在曲线上移动?我已经搜索了所有内容,但似乎找不到另一个可以同时调用两个函数的示例。这是我想要的那种代码,但不起作用:
$('#curve').click(function () {
$(this).animate(
{
top: 400,
left = $(this).left() + $(this).left()*$(this).left()
},
'slow',
function() { $(this).animate( { left: 600 }, 'fast' ); }
);
});
即使这不是正确的代码,我相信 animate 只会将“目的地”带到某事去,所以我认为动态目的地行不通。我在寻找什么来完成这项工作?
编辑:: 我肯定会选择那个插件,但我也想知道为什么这段代码不能像我期望的那样工作。
这是另一个使用 for 循环和延迟方法的尝试
$('#curve').click(function () {
for (var i=0; i<400; i++ )
{
$(this).delay(1000);
$(this).css( { top: i, left: i*1.5 } );
}
});
除了它只是立即转到那个位置,没有延迟或任何东西。所以如果它从 [0,0] 开始,只要我点击它,它就会传送到 [400,600]。为什么延迟不起作用?
【问题讨论】:
-
我认为jQuery中没有延迟功能,除非你使用延迟插件...
-
确保您使用的是 v1.4+ 的 jQuery
-
试试
$(this).delay(1000).css( { top: i, left: i*1.5 } ); -
好吧,我想它有效。所以不是让它成为一个循环,而是让它递归。 JS 中使用递归的频率如何?
-
啊酷。所以它只是 +'px' 部分 =/。很高兴知道递归。感谢所有帮助和示例
标签: javascript jquery animation