2013-04-01 2 views
1
control_td.each(function(){ 
$.ajax({ 
    url: 'control.php?udid='+$(this).attr('udid'), 
    cache: false, 
    async: true 
}).done(function(data) { 
    $(this).html(data); 
}); 
}); 

но $this не работает в .done функции к югу. что я делаю неправильно здесь?

ответ

6

Его потому, что this не относится к элементу в обратном вызове.

Попробуйте закрыть новое значение.

control_td.each(function(){ 
var $self = $(this); // magic here! 
$.ajax({ 
    url: 'control.php?udid='+$(this).attr('udid'), 
    cache: false, 
    async: true 
}).done(function(data) { 
    $self.html(data); 
}); 
}); 
4

Попробуйте это:

control_td.each(function() { 
    var $this = $(this); 
    $.ajax({ 
     url: 'control.php?udid=' + $this.attr('udid'), 
     cache: false, 
     async: true 
    }).done(function (data) { 
     $this.html(data); 
    }); 
}); 
3

Вы можете также установить context вариант в $.ajax, check this option.

control_td.each(function(){ 
    $.ajax({ 
    url: 'control.php?udid='+$(this).attr('udid'), 
    cache: false, 
    async: true, 
    context: this 
    }).done(function(data) { 
    $(this).html(data); 
    }); 
}); 
Смежные вопросы