jQuery 1.4.2的animate() API spec是
.animate( properties, [ duration ], [ easing ], [ callback ] )
但似乎我们可以提供duration
,callback
和否 easing
.animate({left: '+= 100'}, 600, doThis)
它会起作用。
但是,如果我们提供easing
和callback
以及否 duration
.animate({left: '+=100'}, 'swing', doThis)
那么宽松政策将不会生效。那究竟是什么API应该是什么?
更新:请参阅下面的答案。
答案 0 :(得分:2)
通常,jQuery按类型确定可选参数,例如这有效:
$('.class').animate({opacity: 'toggle'}, doThis);
但是在持续时间/缓和的情况下,因为它们都是字符串,所以它不能(如果有一个字符串,it assumes it's the duration)。您需要使用'normal'
作为持续时间来调用它,如下所示:
.animate({left: '+=100'}, 'normal', 'swing', doThis)
或使用.animate(options, properties)
版本,如下所示:
.animate({left: '+=100'}, { easing: 'swing', complete: doThis })
答案 1 :(得分:0)
即使我对API规范仍然不太确定,这些是一些可行的解决方案:
1)提供400, "swing", doThis
,因为400似乎是默认持续时间(在jquery代码中查找fast:
,你可以看到快速为600,慢速为200,如规范中所示,并且_default是400。
2)提供undefined, "swing", doThis
并且它有效。供应null, "swing", doThis
,它也有效。虽然如果不以这种方式记录,依靠这种方法可能并不好。如果省略参数,undefined
是真正的方法,但有时人们会说使用null
,即使它不是正式的。
3)只使用{easing: "swing"}
,这是跳过持续时间并提供缓动方法的官方方式。如果需要回调,请使用{easing: "swing", complete: doThis}
解决方案3似乎是最好的,因为它没有使用规范的模糊部分,而是完全采用规范中更清晰的部分。