$(这)不在ajax的成功函数内工作

Yas*_*ser 3 javascript jquery asp.net-mvc-3

我使用ASP.NET MVC和Jquery,这似乎是一个jquery错误.

我正在对我的方法进行ajax调用,我的代码是

$('.reopenBtn').live('click', function () {
    var taskId = $(this).attr("data-taskid");

    $.ajax({
        url: '/Task/ReopenTask/?strTaskId=' + taskId,
        type: "POST",
        success: function (data) {
            // this does not work !!
            $(this).parent().parent().closest("div").remove();              
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert('Error');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

remove这个问题创建的jsfiddle时不工作,但在这里,这个工程.

那么,$(this)在ajax调用的成功函数中有什么不同吗?

我该如何解决这个问题?谢谢

xda*_*azz 6

context 属性将在ajax的成功函数内部工作 context: this,

$('.reopenBtn').live('click', function () {
    var taskId = $(this).attr("data-taskid");
    var self = this;
    $.ajax({
        url: '/Task/ReopenTask/?strTaskId=' + taskId,
        type: "POST",
        success: function (data) {
            $(self).parent().parent().closest("div").remove();              
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert('Error');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

或者您可以设置contextajax选项的属性.

    $('.reopenBtn').live('click', function () {
        var taskId = $(this).attr("data-taskid");
        $.ajax({
            url: '/Task/ReopenTask/?strTaskId=' + taskId,
            type: "POST",
            context: this,
            success: function (data) {
                $(this).parent().parent().closest("div").remove();              
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert('Error');
            }
        });
    });
Run Code Online (Sandbox Code Playgroud)