我一直试图在ajax函数中使用它来引用事件目标。但似乎这不是我的想法。
例如:
$('#test').live('click',function(){
$.ajax({
type:'post',
url:
data:...,
success:function(mes){
$(this).append('mes');
}
});
});
所以这里$(this)不引用('#test')选择器。它指的是什么? 谢谢你的任何解释。
答案 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()
对象。