Po przemyśleniu o tym trochę trudniej o tym, zdałem sobie sprawę, że to, co próbujesz zrobić, nie jest łatwe do wykonania ze względu na sposób, w jaki animacje są obsługiwane w jQuery.
Ponieważ animacje są zarządzane przez kolejkę, nie można uruchomić animacji współbieżnych na tym samym elemencie, nie będąc w tej samej funkcji.
To znaczy,
$(element).animate(aThing, aTime);
.animate(anotherThing, anotherTime);
nie będzie działać równolegle. aThing zakończy się w po upływie pewnego czasu, a następnie innymThing trwającym przez anotherTime.
W ten sposób można osiągnąć jedynie przez wiele zmian mających je w tej samej funkcji:
$(element).animate({aThing: aValue, anotherThing: anotherValue}, aTime);
Oto krótkie wyjaśnienie, w jaki sposób funkcjonuje anatomii animacji są obsługiwane w ramach jQuery.
Obiekt Timer jest przypisany do elementu przez cały czas trwania animacji:
function t(gotoEnd) {
return self.step(gotoEnd);
}
t.elem = this.elem;
jQuery.timers.push(t);
Po wywołaniu funkcji zatrzymania, usuwa timer z timerów:
// go in reverse order so anything added to the queue during the loop is ignored
for (var i = timers.length - 1; i >= 0; i--) {
if (timers[i].elem === this) {
if (gotoEnd) {
// force the next step to be the last
timers[i](true);
}
timers.splice(i, 1);
}
}
Więc tam nie ma możliwości usunięcia określonej właściwości funkcji animacji, ponieważ sam timer został zabity.
Jedynym sposobem mogę myśleć o realizacji tego byłoby śledzić czas rozpoczęcia i czas trwania, ponownie enqueuing animację i zatrzymywanie bieżącej.
var start = $.now();
var duration = 5000;
$(element).animate({opacity: '0.5', width: '500px'}, duration);
...
var remaining = duration - ($.now() - start);
$(element).animate({opacity: '0.5', remaining)
.stop();
myślałem że nie byłoby to sposób za pomocą niestandardowej nazwie kolejki, ale nie wydaje się, podobnie jak '.Zatrzymaj()' sposób można kierować konkretną kolejkę (o ile mogę powiedz mimo to). – user113716
Na razie złożyłem wniosek o dodanie tej funkcji: http://bugs.jquery.com/ticket/8227 – slifty
Jakie są kryteria zatrzymania animacji? Czy jest oparty na działaniu użytkownika? – Jeff