Это правильный способ поставить анимацию в очередь. Тем не менее, есть несколько вещей, которые можно сделать в вашем коде, чтобы сделать его немного более резким и красивым:
- Сохранение ссылки на выбранный элемент в локальной переменной для ускорения выполнения (меньше запросов в DOM)
- Очистите его, удалив ненужные кавычки для свойств объекта
- Размеры измеряются в пикселях по умолчанию, поэтому вместо них мы можем использовать чистые целые числа
- Именованную функцию можно заменить немедленно вызванной анонимной функцией, а затем использовать
arguments.callee
в качестве обратного вызова
Вот пример, демонстрирующий вышеуказанные изменения:
$(function () {
var element = $("#div");
(function(){
element
.show("slow")
.animate({ marginLeft: 300 }, 1000)
.animate({ marginLeft: 0 }, 1000)
.hide("slow", arguments.callee);
}());
});
Вы также можете сделать это более продвинутым способом, создав собственный плагин для использования пользовательских очередей. Я создал маленькую скрипку некоторое время назад, когда дурачился с очередями анимации.
Подробнее о немедленно вызванной функции выражения можно прочитать в Блог Бена "Ковбой" Алмана .