Ответ очень прост. Спасибо JacobM за вдохновение.
(function($){
$.fn.extend({
hardStop: function(){
return this.each(function(){
var e = $(this);
while (e.queue().length){
e.stop(false, true);
}
});
}
});
})(jQuery);
$("#element").hardStop();
Позднее редактирование: я заметил, что в сложных цепочках анимации необходимо убедиться, что выполнение обратного вызова не добавляет больше функций в очередь fx
уже «очищенного» элемента (учитывая, что в оригинальный селектор):
(function($){
$.fn.extend({
hardStop: function(){
var stopped = false
while (!stopped) {
this.each(function(){
var e = $(this);
while (e.queue().length){
e.stop(false, true);
}
});
stopped = true;
this.each(function(){
var e = $(this);
if (e.queue().length){
stopped = false;
}
});
}
}
});
})(jQuery);
У меня такое чувство, что это решение можно упростить ...