私は次のCoffeeScriptのコードを持っているを中断する方法:LI要素内のステータスメッセージを表示するように意図されてZeptoフェード
# Coffeescript
setMessage = (message, options = {}) ->
t = statusArea.text(message)
if options['fade']
t.addClass('yellow')
t.fadeOut 4000, ->
$(this).removeClass 'yellow'
// Javascript
setMessage = function(message, options) {
var t;
if (options == null) options = {};
t = statusArea.text(message);
if (options['fade']) {
t.addClass('yellow');
return t.fadeOut(4000, function() {
return $(this).removeClass('yellow');
});
}
};
。 options['fade']
が何かに設定されている場合、私はフェーディングのものを呼び出します。私のプログラムフローではまず、Ajaxコールを発行してSELECTをポピュレートし、フェード(すなわち、options['fade']
をtrue
に設定した状態)を「リモート呼び出し」メッセージとしてステータス領域にポストします。これはほとんど瞬間的なこともあれば、しばらく時間がかかることもあります。結果とネットワークトラフィックのサイズによって異なります。 SELECTが入力されると、フェードのない「準備完了」メッセージがポストされます。
この問題は、応答がほぼ瞬間的である場合に発生します。その場合、テキストは「準備完了」に置き換えられるが、アニメーションは継続し、メッセージをフェードアウトする(すなわち、LI要素をフェードアウトさせる)。
別のものを開始する前に、以前の移行を終了させる方法はありますか?
重複してフラグが設定されています:http://stackoverflow.com/questions/1421298/how-do-you-cancel-a-jquery-fadeout-once-it-has-began –
お知らせ私は* Zepto *とjQueryではなく私のタイトルで。答えはjQueryですが、stop()関数がないZeptoは扱いません。私はhttps://github.com/sxross/zepto/commit/0389dd532c7d5f93e7586210d6708bd24922d3ffの私の枝にstop()関数を追加しましたが、もっと良い方法があると思っていました。 –