Javascript范围问题,ajax

时间:2013-03-25 19:10:11

标签: ajax scope this

我想使用ajax提交表单,如果ajax请求成功,则添加“禁用”类。

$("body").on("click", ".my_form", function(e){
    submit_form(e, $(this));    
});

function submit_form(e, _this){
    e.preventDefault();
    $.ajax({
        type:"POST",
        url:"/controller/common/form_processing.php", 
        data: "my form data goes here",
        dataType: "json", 
        success:function (data, _this) {
            _this.parents(".my_form").addClass("disabled");
       });
});

在它的当前形式中,“禁用”类是而不是被添加。但是,如果我在ajax括号外移动行_this.parents(".thumbsup").addClass("disabled");,它确实有效。 (但显然在这种情况下,无论ajax调用是成功还是失败,都会添加“disabled”。有人可以解释如何使其正常工作吗?谢谢

1 个答案:

答案 0 :(得分:1)

从成功回调中删除_this参数,您将重新定义_this而不是原始的submit_form传递给success:function (data) { _this.parents(".my_form").addClass("disabled"); });

的jQuery对象
{{1}}