2010-04-30 99 views
1

我正在为我创建的页面实现“快速删除”功能。它的工作方式是这样的:JQuery ajax成功帮助

1:您单击要删除的记录的表行中的“删除”按钮。

2:页面向ajax页面发送请求并返回成功的消息“yes”或失败消息“no”。

我的问题是,如果我得到一个成功的消息“是”,我想隐藏该记录的行。我遇到了使用JQuery“查找”该行的问题。

这里是我的jQuery代码:

$(document).ready(function(){ 

$(".pane .btn-delete").click(function(){ 

    var element = $(this); 
    var del_id = element.attr("id"); 
    var dataString = 'action=del&cid=' + del_id; 

    if(confirm("Are you sure you want to delete this content block?")) 
     { 
     $("#msgbox").addClass('ajaxmsg').text('Checking permissions....').fadeIn(1000); 

     $.ajax({ 
      type: "get", 
      url: "ajax/admArticles_ajax.php", 
      data: dataString, 
      success: function(data){ 
       switch(data) 
       { 
        case "yes": 
         $("#msgbox").addClass('ajaxmsg').text('Deleting content block....').fadeIn(1000); 

         $(this).parents(".pane").animate({ backgroundColor: "#fbc7c7" }, "fast") 
         .animate({ opacity: "hide" }, "slow") 

        break 
        case "no": 
         $("#msgbox").removeClass().addClass('error').text('You do not have the correct permissions to delete this content....').fadeIn(1000); 
        break 
        default: 
        }; 
       } 
     }); 

    } 
    return false; 
}); 

});

这是我用来隐藏行的代码行,但它不工作,因为我不认为$(this).parents(“。pane”)找到该元素。

$(this).parents(".pane").animate({ backgroundColor: "#fbc7c7" }, "fast") 
         .animate({ opacity: "hide" }, "slow") 

任何帮助将不胜感激。谢谢...

+0

这不是不透明,给我的问题。它是$(this).parents(“。pane”)。它找不到要删除的核心行。如果我将上面的代码放在“switch”语句之外,它会正确隐藏正确的行。我不知道是否需要将该行传递给“成功”函数 – Jason 2010-04-30 00:19:12

+0

如果将代码放在switch语句之外(大概仍在“成功”回调中)会导致该代码生效,那么似乎该交换机是问题。您是否验证过返回的“数据”的值? – user113716 2010-04-30 00:29:17

+0

嗨帕特里克,是的数据返回字符串“是”。只是在switch语句中使用$(this).parents(“。pane”)没有找到正确的行。 如果我将代码更改为$(“。pane”),它将删除表中显示它正在工作的所有行。这是不正确的,但因为我只想删除一行。 – Jason 2010-04-30 00:33:46

回答

3

在Ajax回调,this不会引用处理事件的元素。但是,您已经在您的事件处理程序element中引用了它。只要做:

element.parents(".pane").animate({ backgroundColor: "#fbc7c7" }, "fast") 
        .animate({ opacity: "hide" }, "slow") 
0

我不知道,但我相当肯定,opacity是0到1

这样一个数值,你应该改变你的线是.animate({ opacity: "0" }...