jQuery parent()在ajax响应中隐藏()

时间:2014-01-04 20:51:43

标签: jquery ajax

我希望能够从表中删除用户,然后隐藏显示它们的div。

用户点击类.buddy_delete的按钮,其中包含要传递给删除它们的php文件的信息。

我有以下工作正常,但我需要AJAX响应中的$(this).parent().hide();而不是AJAX之前的任何错误,这可能吗?

$('.buddy_delete').on('click', function(e) {
        e.preventDefault();
        var sei = $(this).attr('sei');
        var sui = $(this).attr('sui');
        $(this).parent().hide(); // ok here
        $.ajax({
            type: "POST",
            url: '/ajax/actions/remove_user_from_list.php?sei=' + sei + '&sui=' + sui,
            success: function (data) {
                if(data==='ok'){
                    // $(this).parent().hide(); // doesn't work here, nothing happens
                } else {
                    $('#errorBoxEvent').html('Houston, we have a problem!');
                }
            }
        }); // End .ajax function
    });

2 个答案:

答案 0 :(得分:1)

设置ajax方法的选项上下文:

$.ajax({
   context: this,
   //...
});

答案 1 :(得分:1)

为什么不使用闭包捕获$(this):

$('.buddy_delete').on('click', function(e) {
    e.preventDefault();
    var sei = $(this).attr('sei');
    var sui = $(this).attr('sui');
    var $that = $(this);  //capture this
    $(this).parent().hide(); // ok here
    $.ajax({
        type: "POST",
        url: '/ajax/actions/remove_user_from_list.php?sei=' + sei + '&sui=' + sui,
        success: function (data) {
            if(data==='ok'){
                $that.parent().hide(); //use here 
            } else {
                $('#errorBoxEvent').html('Houston, we have a problem!');
            }
        }
    }); // End .ajax function
});