#javascript #jquery
#javascript #jquery
Вопрос:
я выполняю jQuery.post
для php-файла, и файл возвращает мне значение.
вопрос в том, почему $(this)
dosent работает в функции обратного вызова? любое предупреждение, передающее что-либо для показа, используя $(this)
, возвращает меня null
$(".class").live("focusout", function(){
jQuery.post("phpfile.php",
{
someValue: someValue
},
function(data)
{
// why the $(this) dosent work in the callback ?
}
)
});
Ответ №1:
В этом случае this
это уже не тот объект. Сохраните ссылку до и используйте позже:
$(".class").live("focusout", function(){
var $this = $(this);
jQuery.post("phpfile.php",
{
someValue: someValue
},
function(data)
{
// 'this' inside this scope refers to xhr object (wrapped in jQuery object)
var x = $this;
}
)
});
Комментарии:
1. Предпочтительно использовать
.ajax()
вместо.post()
, чтобы вы могли задатьcontext
параметр.
Ответ №2:
$(".class").live("focusout", function(){
var this = $(this);
jQuery.post("phpfile.php",{
someValue: someValue
},function(data){
// Now use this instead of $(this), like this.hide() or whatever.
})
});
$ (this) в вашем примере, я думаю, ссылался на $.post.
Комментарии:
1. Добавьте
var
объявление перед вашимthis
вызовом, иначеthis
переменная попадет в глобальную область видимости.