私はJQueryUIを使用してaddClass()を使用し、後でremoveClass()を使用しています。
addClass()が完了する前にremoveClass()が呼び出されると、キューに入れられ、後で実行されます。これは理想的ではありません。むしろ、removeClass()を現在のCSS値からすぐに実行するようにします。
add / removeClass()の直前にstop()を呼び出すと、add / removeClass()コールバックは引き続き起動しますが、stop()呼び出しの瞬間にアニメーションが永続的に「フリーズ」しているように見えます。
ここのJSだけ:
var obj = $("#obj");
obj.addClass("obj");
$("#add").click(function(){
//obj.addClass("adder", 2000, "easeInOutCubic", onAdded);
obj.stop().addClass("adder", 2000, "easeInOutCubic", onAdded);
});
$("#remove").click(function(){
//obj.removeClass("adder", 2000, "easeInOutCubic", onRemoved);
obj.stop().removeClass("adder", 2000, "easeInOutCubic", onRemoved);
});
function onAdded () { console.log("added"); }
function onRemoved () { console.log("removed"); }
残りはすべてここにあります:http://jsfiddle.net/mmstM/42/
これは一般的な問題のようですが、SOやその他の場所で適切な情報が見つかりませんでした...これはJQuery UI用であり、コアではないことに注意してください。