Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Непонимаю fx в queue (https://javascript.ru/forum/jquery/31093-neponimayu-fx-v-queue.html)

lancer 26.08.2012 23:27

Непонимаю fx в queue
 
http://api.jquery.com/queue/#queue1 - вот простейшее queue с одним параметром, о котором говориться в двух предложениях:
Цитата:

A string containing the name of the queue. Defaults to fx, the standard effects queue.

В примерах показывается только употребление c fx, ни одного с именем очереди. Понять бы хотя-бы с fx. Ниже приводиться пример с ним, showIt() показывает количество сработавших функций очереди на данный момент.
function showIt() {
  var n = div.queue("fx");
  $("span").text( n.length );      
  setTimeout(showIt, 100);
}


Не пойму, что значит fx? "standard effects queue" - "стандартные эффекты очереди"? Пусть под эффектами понимаются эти самые функции, что в примере, но что значит "стандартные"?
div.show("slow");
div.animate({left:'+=200'},2000);
div.slideToggle(1000);
...

Могу предположить, что просто все функции очереди элемента, но почему тогда не записывают еще проще n = div.queue()? Сомневаюсь, что я правильно понял "стандартные".

raler 26.08.2012 23:37

что тебе именно надо?
если тебе надо чтобы функция выполнялась после чего-то то можно использовать либо
$('.element').animate({left:100}, 200).queue(function() {
// Выполнение всего другого после выполнения animate
});


либо
$('.element').animate({left:100}, 200, function() {
// Выполнение всего другого после выполнения animate
});

lancer 27.08.2012 00:01

raler, насчет этого понятно, как ставить в очередь что-то. По кр. тупо повторять за примером на jquery.com научился. Нужно именно fx понять.

melky 27.08.2012 07:34

Цитата:

Сообщение от lancer
Не пойму, что значит fx?

имя очереди, куда забиваются функции по анимации элементов, если другую очередь не указать.
Цитата:

Сообщение от lancer
"standard effects queue" - "стандартные эффекты очереди"?

стандартная очередь эффектов.
Цитата:

Сообщение от lancer
но что значит "стандартные"?

это значит, что если не передать самому имя очереди, то оно будет "fx".

lancer 27.08.2012 16:10

А что там может быть еще кроме fx, если эта функция возвращает в таком виде только количество сработавших эффектов?

var n = div.queue("another_queue");

Глупость же получается, я пишу queue к div'y, а очередь беру с другого элемента. Какой смысл мне следить за очередью из другого элемента в этом элементе. Вообще бред выходит.

melky 27.08.2012 18:00

Цитата:

Сообщение от lancer (Сообщение 200874)
А что там может быть еще кроме fx, если эта функция возвращает в таком виде только количество сработавших эффектов?

var n = div.queue("another_queue");

Глупость же получается, я пишу queue к div'y, а очередь беру с другого элемента. Какой смысл мне следить за очередью из другого элемента в этом элементе. Вообще бред выходит.

в очередь можно пихать свои функции, не только анимацию.

очередь с другого элемента? что?

lancer 27.08.2012 19:08

Цитата:

Сообщение от melky (Сообщение 200906)
в очередь можно пихать свои функции, не только анимацию.

очередь с другого элемента? что?

Знаю, что можно пихать свои функции, но здесь хочется понять не добавление, а именно возвращение количества выполненых эффектов с отличным от fx параметром(любой другой очередью). Сейчас речь именно о таком queue http://api.jquery.com/queue/#queue1. Я не могу представить ситуацию, как это может быть не fx, а какая-то другая очередь.

n = div.queue("другая очередь")

1) Во-первых в чем такая "другая очередь" будет выражаться? Массив или что-то еще?
2) Зачем тогда ее писать к div., а не просто queue("другая очередь"), если она нафиг не от этого дива и не fx, а "другая очередь".

melky 27.08.2012 20:38

Цитата:

Сообщение от lancer
1) Во-первых в чем такая "другая очередь" будет выражаться? Массив или что-то еще?

массив.

Цитата:

Сообщение от lancer
2) Зачем тогда ее писать к div., а не просто queue("другая очередь"), если она нафиг не от этого дива и не fx, а "другая очередь".

у каждой коллекции - своя очередь. она как раз от "этого дива", но не от fx, потому что fx - это другая очередь.

lancer 27.08.2012 20:53

Понял. Спасибо.

lancer 28.08.2012 20:01

Не не понял. Может кто-нибудь привести пример как употребляется имя очереди?
Нигде нет такого примера в сети, чтобы найти как элементарный пример.

melky 28.08.2012 23:43

Цитата:

Сообщение от lancer (Сообщение 201226)
Не не понял. Может кто-нибудь привести пример как употребляется имя очереди?
Нигде нет такого примера в сети, чтобы найти как элементарный пример.

в документации квери есть НАГЛЯДНЫЙ пример. если что=то непонятно, открываете консоль, и смотрите.

lancer 29.08.2012 00:02

Цитата:

Сообщение от melky (Сообщение 201273)
в документации квери есть НАГЛЯДНЫЙ пример. если что=то непонятно, открываете консоль, и смотрите.

Его там нет в этой документации, она лажовая. В конце концов поиск привел к этой статье, тут все подробно.
http://cdmckay.org/blog/2010/06/22/h...mation-queues/

LittlePony 29.08.2012 07:18

спасибо, статья действительно интересная

lancer 30.08.2012 16:30

Встрял с пониманием queue:false в методе animate.
Пример с офф-сайта jquery, свойство употребляется для первой анимации. Не понятно почему queue:false включенная в первой анимации, делает все анимации очереди одновременными. Зачем его употребление сделали в конкретной анимации, когда он действует на все сразу.

http://api.jquery.com/animate/
Цитата:

queue: A Boolean indicating whether to place the animation in the effects queue. If false, the animation will begin immediately. As of jQuery 1.7, the queue option can also accept a string, in which case the animation is added to the queue represented by that string.
Тут написано, булевое значение определяющее место аниации в очереди эффектов. Если false, анимация начнется незамедлительно. С чего бы она начиналась по другому, когда она и так первой стоит? И речь идет о анимации, а не анимациях. С чего тогда это влият на все анимации очереди.

<!DOCTYPE html>
<html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
        <script type="text/javascript" language="javascript">
        	$(function(){
			$("#go1").click(function(){
                    $("#block1").animate(
						{
	                        width: "90%"
	                    }, 
						{
                        	queue: false,
                        	duration: 3000
                    	}
					).animate(
						{
                        	fontSize: "24px"
                    	},
						1500
					)
					.animate(
					{
                        borderRightWidth: "15px"
                    }, 
					1500
					);
                });
            });
        </script>
        <style>
            div {
                background-color: #bca;
                width: 200px;
                height: 1.1em;
                text-align: center;
                border: 2px solid green;
                margin: 3px;
                font-size: 14px;
            }
            
            button {
                font-size: 14px;
            }
        </style>
    </head>
    <body>
        <button id="go1">Animate Block1</button>
        <div id="block1">Block1</div>
    </body>
</html>

lancer 31.08.2012 14:43

Разобрался. Только сейчас заметил, что последнее действие(наращивание правого бордера) происходит последовательно, в конце, а не вместе с увеличением шрифта.


Часовой пояс GMT +3, время: 04:07.