2011-12-15 65 views
1

我正在努力跟隨的事情。我有一個用戶頁面,人們可以在這裏創建組來存儲內容。它也可以刪除一個組。文有人刪除了他的組,這將由ajax完成,因此沒有頁面重新加載。在這個Ajax請求之後,我會顯示一條消息,指出該組已被刪除。jquery ajax請求後的雙重信息

問題; 當用戶刪除一個組時,該消息顯示正常。當用戶刪除第二個組時,消息顯示兩次,所以最後的消息沒有被真正刪除,而是由另一個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

每當您撥打prepend()時,您都會向DOM添加其他消息。

你應該在你的點擊功能之外加上消息,然後在成功時顯示/隱藏它。

+0

感謝您對此功能的說明! – directory 2011-12-16 12:28:18

0

這是因爲您隱藏div/message而不是刪除它。使用Remove()函數刪除類「隱藏消息警報」,然後在下次刪除時它不會彈出。

編輯:我的壞,我看到你已經在最後有Remove() - 但我不認爲你調用它是正確的,因爲在消息/ div你的類有兩個名字。您可能需要使用這兩個名稱來引用它:

$('。hide-message alert')。remove();

+0

您不必同時使用兩個選擇器 – 2011-12-15 15:13:18

0

試試這個,你在前面加上一個額外的「.hide消息」 DIV頁面

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

當你刪除的東西。

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

然後你效果基本show()的「.hide消息」的div ...

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

...所有這些添加的div將顯示,每組一個已刪除。