115 of 119 menu

Метад queue

Метад queue дазваляе нам працаваць з чаргой функцый, прывязаных да элемента. Глядзіце таксама метад clearQueue, які дазваляе нам выдаліць з чаргі ўсе функцыі, якія не былі запушчаны.

Сінтаксіс

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

.queue([імё чаргі]);

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

.queue([імё чаргі], новая чарга );

А можна другім параметрам перадаць новую callback-функцыю для дабаўлення ў чаргу. Гэтая функцыя ў сваю чаргу атрымлівае іншую функцыю ў якасці параметра. Гэта дазваляе аўтаматычна прыбіраць з чаргі наступны элемент і рухаць чаргу:

.queue([імё чаргі], callback-функцыя(next) { next(); });

Кожны элемент можа мець адну або некалькі чарг. У многіх прыкладаннях выкарыстоўваецца толькі адна (fx). Чаргі дазваляюць ажыццяўляць паслядоўнасць дзеянняў з элементам асінхронна, без перапынення выканання праграмы. Выклік queue з 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,
    які дазваляе выканаць наступную функцыю ў чарзе функцый
azbydeenesfrkakkptruuz