2011-12-15 24 views
1

私は以下のことに苦労しています。私は人々がそこにコンテンツを格納するグループを作ることができるユーザーページを持っています。グループを削除することも可能です。 Wenの誰かが彼のグループを削除しました。これはajaxによって行われるので、ページのリロードはありません。このAjaxリクエストの後、私はグループが削除されたというメッセージを表示します。Ajaxリクエスト後のJquery doubleメッセージ

問題です。 ユーザーがグループを削除すると、メッセージがよく表示されます。ユーザーが2番目のグループを削除すると、メッセージは2回表示されるため、最後のメッセージは実際には削除されませんが、別のajaxリクエストによって戻されます。どうすれば解決できますか?

コードサンプル。

$(function() { 
    var form = $('form.groups select'); 
    $("a.remove-group", this).live("click", function(){ 

     var group_name = $(this).attr("id"); 
     var string = 'group_name=' + group_name; 

     $.ajax({ 
       type: "POST", 
       url: "/settings/delete/", 
       data: string, 
       cache: false, 
       success: function() { 
        $('.fullpage').prepend('<div class="hide-message alert">Group removed</div>'); 
        $("#ordered").load('/settings/managmant/'); 
       } 
      }); 

    }); 
}); 

メッセージは読み込まれた後に削除されます。

setTimeout(function() { 
    $('.hide-message').slideUp('slow').remove(); 
}, 2000); 

答えて

3

あなたがDOMに追加メッセージを追加しているprepend()呼び出すたび。

あなたのクリック機能の外にメッセージを付加してからちょうど成功にそれを隠す/表示する必要があります。

+0

両方のセレクタを使用する必要はありません! – directory

0

これは、削除する代わりにdiv /メッセージを非表示にしているためです。 Remove()関数を使用してクラス「hide-message alert」を削除すると、次に削除するときにポップしません。

編集:私の悪い、私はすでにあなたを参照してください最後に()を取り外し持っている - しかし、私は、メッセージ/ divの中で、あなたのクラスはそれに2つの名前を持っている権利ので、あなたはそれを呼んでいるとは思いません。 (「隠すメッセージのアラートを」):あなたはそのような両方の名前使用して、それをREFに必要がある場合があります

$を削除します();。

+0

あなたは、この機能の説明をありがとう –

0

あなたがページに追加「.hideメッセージ」のdivを付加何かを削除すると、この

$("a.remove-group", this).die('click').live("click", function(){ 
0

を試してみてください。これらの追加のdiv要素のすべては、あなたが削除したグループごとに1つずつ表示されます

その後
$('.fullpage').prepend('<div class="hide-message alert">Group removed</div>'); 

あなたslideUp() ".hideメッセージ" のdiv ...

$('.hide-message').slideUp('slow') 

...。

関連する問題