что «это» представляет внутри функции AJAX - PullRequest
3 голосов
/ 24 июля 2011

Я пытался использовать это внутри функции ajax для ссылки на цель события. но, похоже, я так не думаю.

например:

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

поэтому здесь $ (this) не относится к селектору ('#test'). что оно относится к?? спасибо за любые объяснения.

Ответы [ 4 ]

4 голосов
/ 24 июля 2011

Внутри обратного вызова успеха 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 не является анонимной функцией.

3 голосов
/ 24 июля 2011

По умолчанию this будет объектом расширенных настроек, используемым в вызове AJAX. Из документации :

По умолчанию контекст является объектом, который представляет настройки 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');
        }
    });
});
1 голос
/ 24 июля 2011

В этом примере $(this) будет представлять объект $.ajax().

1 голос
/ 24 июля 2011

Это контекст.С JQuery site :
Ссылка this во всех обратных вызовах - это объект в опции контекста, переданный в настройки $ .ajax;если контекст не указан, это ссылка на сами настройки Ajax.

...