Spec-Zone.ru › jQuery

.queue()

Показывать или манипулировать очередью функций, которые должны быть выполнены над выбранными элементами.

Содержание:

  • .queue( [имяОчереди] )
    • .queue( [имяОчереди] )
  • .queue( [имяОчереди], новаяОчередь )
    • .queue( [имяОчереди], новаяОчередь )
    • .queue( [имяОчереди], обработчик )

.queue( [имяОчереди] )Возвращает: Массив

Описание: Показать очередь функций, которые должны быть выполнены над выбранными элементами.

  • версия добавлена: 1.2.queue( [имяОчереди] )

    • имяОчереди
      Тип: Строка
      Строка, содержащая имя очереди. По умолчанию fx, стандартная очередь эффектов.

Пример:

Показать длину очереди.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>queue demo</title>
  <style>
  div {
    margin: 3px;
    width: 40px;
    height: 40px;
    position: absolute;
    left: 0px;
    top: 60px;
    background: green;
    display: none;
  }
  div.newcolor {
    background: blue;
  }
  p {
    color: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<p>The queue length is: <span></span></p>
<div></div>
 
<script>
var div = $( "div" );
 
function runIt() {
  div
    .show( "slow" )
    .animate({ left: "+=200" }, 2000 )
    .slideToggle( 1000 )
    .slideToggle( "fast" )
    .animate({ left: "-=200" }, 1500 )
    .hide( "slow" )
    .show( 1200 )
    .slideUp( "normal", runIt );
}
 
function showIt() {
  var n = div.queue( "fx" );
  $( "span" ).text( n.length );
  setTimeout( showIt, 100 );
}
 
runIt();
showIt();
</script>
 
</body>
</html>

Демо:

.queue( [имяОчереди], новаяОчередь )Возвращает: jQuery

Описание: Изменить очередь функций, которые должны быть выполнены один раз для каждого выбранного элемента.

  • версия добавлена: 1.2.queue( [имяОчереди], новаяОчередь )

    • имяОчереди
      Тип: Строка
      Строка, содержащая имя очереди. По умолчанию fx, стандартная очередь эффектов.
    • новаяОчередь
      Тип: Массив
      Массив функций для замены текущего содержимого очереди.
  • версия добавлена: 1.2.queue( [имяОчереди], обработчик )

    • имяОчереди
      Тип: Строка
      Строка, содержащая имя очереди. По умолчанию fx, стандартная очередь эффектов.
    • обработчик
      Тип: Функция( Функция next() )
      Новая функция для добавления в очередь, с функцией для вызова, которая декьюит следующий элемент.

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

$( "#foo" ).slideUp().fadeIn();

При выполнении этого оператора элемент сразу начинает свою анимацию сдвига, но переход с затемнением помещается в очередь fx для вызова только после завершения перехода сдвига.

Метод .queue() позволяет нам напрямую манипулировать этой очередью функций. Вызов .queue() с обратным вызовом особенно полезен; он позволяет поместить новую функцию в конец очереди. Функция обратного вызова выполняется один раз для каждого элемента в наборе jQuery.

Эта функция похожа на предоставление функции обратного вызова с методом анимации, но не требует, чтобы обратный вызов был предоставлен в момент выполнения анимации.

$( "#foo" ).slideUp();
$( "#foo" ).queue(function() {
  alert( "Animation complete." );
  $( this ).dequeue();
});

Это эквивалентно:

$( "#foo" ).slideUp(function() {
  alert( "Animation complete." );
});

Обратите внимание, что при добавлении функции с .queue(), мы должны убедиться, что .dequeue() в конечном итоге будет вызван, чтобы следующая функция в очереди выполнялась.

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

$( "#test" ).queue(function( next ) {
    // Do some stuff...
    next();
});

Примеры:

В очереди пользовательская функция.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>queue demo</title>
  <style>
  div {
    margin: 3px;
    width: 40px;
    height: 40px;
    position: absolute;
    left: 0px;
    top: 30px;
    background: green;
    display: none;
  }
  div.newcolor {
    background: blue;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
Click here...
<div></div>
 
<script>
$( document.body ).on( "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();
} );
</script>
 
</body>
</html>

Демо:

Установить массив очереди для удаления очереди.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>queue demo</title>
  <style>
  div {
    margin: 3px;
    width: 40px;
    height: 40px;
    position: absolute;
    left: 0px;
    top: 30px;
    background: green;
    display: none;
  }
  div.newcolor {
    background: blue;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<button id="start">Start</button>
<button id="stop">Stop</button>
<div></div>
 
<script>
$( "#start" ).on( "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" ).on( "click", function() {
  $( "div" )
    .queue( "fx", [] )
    .stop();
});
</script>
 
</body>
</html>

Демо:

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquery.com/queue

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API