0

私の Rails アプリケーションでは、ユーザーが保存すると、Ajax を使用して投稿を保存し、update.js.erb ファイルを実行します。そのファイルには、いくつかの jQuery があります。

$('body').append('<div class="message">Saved</div>');

このようにしているため、ユーザーが保存するたび<div class="message">Saved</div>に、本体にさらに追加されます。それを止める方法はありますか、それとも問題ではありませんか?

4

2 に答える 2

0

まず、保存が何千回も行われていない限り、それはおそらく問題ではありません。画像が非常に大きいため、Webページの数kbの余分なテキストは、いくつかの画像と比較して見劣りすることを覚えておいてください。

次に、DOMにこれらの1つだけを含めるためのいくつかのオプションがあります。

  1. ユーザーに表示した後、DOMから削除します(おそらくタイマーで)。
  2. メッセージを1つだけ持ち、必要に応じて表示/非表示にします(これはおそらく最も簡単です)。
  3. 1つがすでにページにあるかどうかを確認し、それを再利用します。

たとえば、前のメッセージオブジェクト(最初は非表示になっている)を見つけて短時間表示するには、次のように使用できます。

$(".message").html("Saved").show().delay(2000).fadeOut(1000);

これを使用した場合は、メッセージオブジェクトを最初にページに1回配置するか、元のページのHTMLに配置するか、ページの起動コードに1回追加するだけです。次に、CSSをデフォルトで非表示にして、必要なときにだけ表示されるようにします。

または、クラス名に基づくCSS3トランジションを使用している場合は、jQueryaddClass()とを使用するだけで済みますremoveClass()

于 2012-12-22T23:14:48.417 に答える
0

怠惰な(しかし簡単な)方法は、新しいメッセージを表示する前に他のメッセージをクリアすることです。

$('.message').remove();
$('body').append('<div class="message">Saved</div>');
于 2012-12-22T23:15:21.477 に答える