問題はJqueryのキューに関連していると思います。clearQueue() を使用してキューをクリアしてアニメーションを停止できますが、キューをクリアしてもコールバック関数を停止することはできません。
$("#sth").animate( { width:'100%' }, 2000, function() {
$("#sth").css("width","0%");
});
と
$("#sth").clearQueue().css("width","0%");
アニメートを停止して幅を押し戻すことができます。ただし、2000 ミリ秒後には、完全なコールバック機能により、幅も 100% になります。キューが存在するかどうかに関係なく、関数は 2000 ミリ秒後に呼び出されます。