ajax请求后的Jquery双消息

时间:2011-12-15 14:55:29

标签: ajax jquery

我正在努力追随这件事。我有一个用户页面,人们可以在这里制作组来存储内容。它也可以删除一个组。温某有人删除了他的小组,这将由ajax完成,因此没有页面重新加载。在此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);

4 个答案:

答案 0 :(得分:3)

每当您致电prepend()时,您都会向DOM添加其他消息。

您应该在点击功能之外添加消息,然后在成功时显示/隐藏消息。

答案 1 :(得分:0)

那是因为你隐藏了div /消息而不是删除它。使用Remove()函数删除类&#34;隐藏消息警报&#34;,然后下次删除时不会弹出。

编辑:我的不好,我发现你最后已经有了删除() - 但我不认为你正确地调用它是因为在message / div中你的班级有两个名字。您可能必须使用这两个名称来引用它:

$(&#39; .hide-message alert&#39;)。remove();

答案 2 :(得分:0)

试试这个

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

答案 3 :(得分:0)

当您删除某些内容时,会在页面前添加一个“.hide-message”div。

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

然后你slideUp()“。hide-message”divs ......

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

...将显示所有这些添加的div,每个组已删除一个。