2012-06-01 11 views
7

html:jQuery. W jaki sposób funkcja queue() różni się od funkcji wywołania zwrotnego, ponieważ coś jest zrobione?

<span>hello world!</span> 

JS: (używając zwrotna)

$('span').click(function() { 
    $(this).animate({ 
    fontSize: '+=10px' 
    }, 'slow', function() { 
    // callback after fontsize increased 
    $(this).text( $(this).text() + ' rolled! '); 
    }); 
}); 

Tak, że za każdym razem SPAN to kliknąć, tekst 'walcowane' dołączany po większy rozmiar czcionki, a nie dzieje się ze sobą.

I można to zrobić za pomocą kolejki(), jak również tak:

JS: (używając kolejkę())

$('span').click(function() { 
    $(this).animate({ 
    fontSize: '+=10px' 
    }, 'slow'}) 
    .queue(function() { 
    $(this).text( $(this).text() + ' rolled! '); 
    }); 
}); 

Nie jestem pewien, jaka jest różnica między nimi. obie robią to samo.

Dlaczego funkcja queue() jest lepsza/preferowana niż funkcja oddzwaniania (lub dlaczego nie)? Co jest specjalnego w kolejce()?

Dzięki.

+1

sprawdzenie tego wątku - http://stackoverflow.com/questions/1058158/can-somebody-explain-jquery-queue-to-me –

Odpowiedz

1

można umieścić więcej wydarzeń (co specifie indziej w kodzie) w tej samej kolejce jako animacja zostanie wprowadzony.

Więc zwrotna zostanie wykonany natychmiast po animacja jest gotowy, ale w przypadku za pomocą queue() mogą być inne zdarzenia w kolejce, które zostaną wykonane jako pierwsze.

Zaletą tego zachowania jest to, że żadne zdarzenia współbieżne (przesuwanie i przesuwanie w dół na przykład) nie będą wykonywane w tym samym czasie, co dałoby dziwne rzeczy.

Przykład:

$('div').click(function() { 
    $(this).animate({ 
    color: 'green' 
    }, 'slow'}) 
    .queue(function() { 
    $(this).text(' got colored! '); 
    }); 
}); 

$('span').click(function() { 
    $(this).animate({ 
    fontSize: '+=10px' 
    }, 'slow'}) 
    .queue(function() { 
    $(this).text( ' got bigger! '); 
    }); 
}); 

Jeśli najpierw kliknij div i natychmiast po tym, że rozpiętość, teraz można mieć pewność, że kolejka div zostanie wykonany pierwszy, a gdy będzie gotowa, kolejki zakresu zostanie wykonany.

W przypadku wywołania zwrotnego pierwsza z animacji, która jest gotowa jako pierwsza. A jeśli byliby gotowi w tym samym czasie, obaj zostaliby straceni w tym samym czasie. W wyniku tego, w tym przypadku, nie zobaczyłoby się "dostał kolor!" tekst lub "wzrosła!" tekst.

+0

dzięki za odpowiedzi, ale trudne do zrozumienia, czy masz przykład? – gilzero

+0

@gilzero: dodany przykład – iddo

+1

@tangelo Nie rozumiem tej odpowiedzi w ogóle. Przykład nie pasuje do Twojego opisu. Czy możesz wyjaśnić, w jaki sposób animacja "div" jest powiązana z animacją "span"? –

0

Parametr ten jest dokładnie taki sam jak w przypadku metody .queue(callback).
Po dostarczeniu obiektu callback do dowolnej animacji, kolejkowanie wywołania zwrotnego jest ustawiane w kolejce tak samo, jak .queue.

.queue(callback) to kolejny sposób na dodanie wywołania zwrotnego oddzielnie od animacji.
Jest to całkowicie uzasadnione powody, aby to zrobić:

$(this).animate(...); 
if (shouldDoCallback) { 
    $(this).queue(...); 
} 
Powiązane problemy