Стажировка
Открыта запись на бесплатный пробный месяц! Жми для подробностей! →
115 of 119 menu
По вашим просьбам сделал СВЕЖУЮ ОФЛАЙН ВЕРСИЮ номер 4 (временную). Рекомендую скачать на случай проблем с доступностью сайта.

Метод queue

Метод queue позволяет нам работать с очередью функций, привязанных к элементу. Смотрите также метод clearQueue, который позволяет нам удалить из очереди все функции, которые не были запущены.

Синтаксис

Так мы показываем очередь выполняемых функций, привязанных к элементу. Можно передать необязательным параметром название очереди в виде строки (по умолчанию fx - стандартная очередь эффектов):

.queue([имя очереди]);

Мы можем манипулировать очередью. Выполняется один раз для каждого элемента. Для этого можно передать вторым параметром массив функций, которые заменят содержание текущей очереди:

.queue([имя очереди], новая очередь );

А можно вторым параметром передать новую callback-функцию для добавления в очередь. Эта функция в свою очередь получает другую функцию в качестве параметра. Это позволяет автоматически убирать из очереди следующий элемент и двигать очередь:

.queue([имя очереди], callback-функция(next) { next(); });

Каждый элемент может иметь одну или несколько очередей. Во многих приложениях используется только одна (fx). Очереди позволяют осуществлять последовательность действий с элементом асинхронно, без прерывания выполнения программы. Вызов queue c callback-функцией позволяет нам поместить новую функцию в конец очереди. callback-функция выполняется один раз для каждого элемента в наборе. При добавлении функции с помощью queue, мы должны убедится, что потом будет вызван метод dequeue, для того чтобы следующая функция в цепочке заработала.

Пример

Давайте добавим пользовательскую функцию. Сначала, после нажатия на #animate, мы покажем красный квадрат, который будет двигаться вправо в течение , затем при помощи queue мы добавим пользовательскую функцию, которая перекрасит квадрат в зеленый, добавив класс newcolor. Как видите, затем здесь вызывается dequeue, чтобы убрать функцию из очереди. Затем наш квадрат будет двигаться влево полсекунды и перекрасится обратно в красный - при помощи второй пользовательской функции мы убираем класс newcolor. По окончанию анимации мы сворачиваем наш квадрат:

<button id="animate">start</button> <div></div> div { position: absolute; margin: 3px; width: 50px; height: 50px; left: 0px; top: 30px; background: red; display: none; } div.newcolor { background: green; } $('#animate').click(function() { $('div') .show('slow') .animate({left: '+=200'}, 2000) .queue(function() { $(this).addClass('newcolor').dequeue(); }) .animate({left: '-=200'}, 500) .queue(function() { $(this).removeClass('newcolor').dequeue(); }) .slideUp(); });

Пример

Давайте добавим очередь в виде массива, чтобы удалить предыдущую. При нажитии на кнопку #start мы будем видеть анимацию из предыдущего примера. При нажатии на кнопку #stop мы будем останавливать анимацию путем добавления пустого массива. При повторном нажатии на #start анимация будет начинаться заново:

<button id="start">start</button> <button id="stop">stop</button> <div></div> div { position: absolute; margin: 3px; width: 50px; height: 50px; left: 0px; top: 30px; background: red; display: none; } div.newcolor { background: green; } $('#start').click(function() { $('div') .show('slow') .animate({left: '+=200'}, 5000) .queue(function() { $(this).addClass('newcolor').dequeue(); }) .animate({left: '-=200'}, 1500) .queue(function() { $(this).removeClass('newcolor').dequeue(); }) .slideUp(); }); $('#stop').click(function() { $('div').queue('fx', []).stop(); });

Смотрите также

  • метод animate,
    который анимирует свойства элементов
  • метод clearQueue,
    который позволяет удалить все невыполненные элементы из очереди функций
  • метод dequeue,
    который позволяет выполнить следующую функцию в очереди функций
nlazbniduz