'this'在ajax函数中表示什么?

时间:2011-07-24 08:52:33

标签: jquery ajax this

我一直试图在ajax函数中使用它来引用事件目标。但似乎这不是我的想法。

例如:

$('#test').live('click',function(){
     $.ajax({
         type:'post',
         url:
         data:...,
         success:function(mes){
             $(this).append('mes');
         }
     });
});

所以这里$(this)不引用('#test')选择器。它指的是什么? 谢谢你的任何解释。

4 个答案:

答案 0 :(得分:4)

成功回调this内部是指由jQuery创建的全局对象,其中包含有关AJAX重新请求的信息。如果你想获得原始的DOM元素,你可以在一个闭包中捕获它:

$('#test').live('click',function() {
    var $this = $(this);
    $.ajax({
        type: 'post',
        url: '/'
        data: { },
        success: function(mes) {
            $this.append('mes');
        }
    });
});

或者如果您不喜欢闭包,可以将其作为请求的键/值对传递:

$('#test').live('click',function() {
    $.ajax({
        type: 'post',
        url: '/'
        data: { },
        myElement: $(this),
        success: function(mes) {
            this.myElement.append('mes');
        }
    });
});

success回调不是匿名函数的情况下,这可能很有用。

答案 1 :(得分:3)

默认情况下,this将是AJAX调用中使用的扩展设置对象。来自documentation

  

默认情况下,上下文是表示ajax设置的对象   在调用中使用($.ajaxSettings与传递给的设置合并   $.ajax)。

您可以使用context设置指定回调中将引用的对象this

$("#test").live("click", function() {
    $.ajax({
        type: "post",
        context: this,
        success: function(mes) {
            // Here, this will refer to #test.
            $(this).append('mes');
        }
    });
});

答案 2 :(得分:1)

这是背景。来自JQuery site
所有回调中的this引用是在设置中传递给$ .ajax的上下文选项中的对象;如果未指定context,则这是对Ajax设置本身的引用。

答案 3 :(得分:1)

在该示例中,$(this)代表$.ajax()对象。