Каково точное правило параметров jQuery animate ()? - PullRequest
0 голосов
/ 13 июня 2010

API jQuery 1.4.2 animate () API равно

.animate( properties, [ duration ], [ easing ], [ callback ] )

но, похоже, мы можем поставить duration, callback и нет easing

.animate({left: '+= 100'}, 600, doThis)

и это будет работать.

Но если мы поставим easing и callback и нет duration

.animate({left: '+=100'}, 'swing', doThis)

тогда ослабление не вступит в силу. Так каким же должен быть API?

Обновление: см. Мой ответ ниже.

Ответы [ 2 ]

2 голосов
/ 13 июня 2010

Обычно jQuery определяет необязательные параметры по типам, например, это работает:

$('.class').animate({opacity: 'toggle'}, doThis);

Но в случае продолжительности / замедления, поскольку они обе строки, они не могут (и если есть одна строка, , то предполагается, что это продолжительность ). Вам нужно либо назвать его с 'normal' как продолжительность, например:

.animate({left: '+=100'}, 'normal', 'swing', doThis)

Или используйте версию .animate(options, properties), например:

.animate({left: '+=100'}, { easing: 'swing', complete: doThis })
0 голосов
/ 13 июня 2010

, хотя я все еще не уверен в спецификации API, вот некоторые жизнеспособные решения:

1) поставляет 400, "swing", doThis, так как 400, по-видимому, является продолжительностью по умолчанию (ищите fast: вкод jquery, и вы можете видеть, что fast - это 600, slow - 200, как в спецификации, а _default - 400.

2) поставляет undefined, "swing", doThis, и это работает.Поставка null, "swing", doThis и это тоже работает.Хотя, возможно, не стоит полагаться на этот метод, если он не задокументирован таким образом.undefined - это действительно правильный путь, если аргумент пропущен, но иногда люди говорят, что используют null, хотя это не является официально правильным.

3) просто используйте {easing: "swing"}, и это официальный способ пропуститьдлительность и способ смягчения.если требуется обратный вызов, тогда используйте {easing: "swing", complete: doThis}

Решение 3 кажется наилучшим, поскольку оно не использует расплывчатую часть спецификации и полностью соответствует более четкой части спецификации.

...