これがうまくいくかもしれない解決策です。
追加のコールバックをキューに入れる新しい遷移関数を作成してみてください。このコールバックは、停止によってアニメーションがデキューされた後にクリーンアップできます。クリアとスキップの指示 ただし、古い停止機能から受信されません。しかし、そのための新しい停止機能を作成できます。これはブラウザに入力しただけで、完全にテストされていません
(function($){
$.fn.stopableTransition = function (...){
var skip = false
var clear = false
this.handle("stopTransition", function(doclear, doskip){
skip = doskip; clear = doclear;
})
this.transition(...)
this.queue(function(){
if(skip){
//todo: ensure animation is removed from css
//todo: move object to where the animation would have finished
}
else
{
//todo: ensure animation is removed from css
//todo: make sure object stays at its current position
}
if(clear){
skip = false
clear = false
$(this).clearQueue()
}
else
{
skip = false
clear = false
$(this).dequeue()
}
})
}
$.fn.stopTransition = function (clear, skip){
clear = (typeof(clear) === 'undefined') ? false : clear;
skip = (typeof(skip) === 'undefined') ? false : skip;
this.triggerHandler("stopTransition", [clear, skip])
this.dequeue();
}
})(jQuery)