为什么foo不会被追加?
$.ajax({
type: 'GET',
dataType: 'json',
cache: false,
url: 'barfoochakalaka',
success:
function(response) {
$.each(response, function(index, val) {
$(this).parent().parent().append('foo');
});
}
})
答案 0 :(得分:4)
因为在each
内,this
设置为正在迭代的当前元素(docs),所以通常我们在进入之前将this
定义为其他内容each
循环:
var that = this;
$.each(response, function(index, val) {
var content = '<div class="link-history">'+ val.date + ', ' + val.userid + ', ' + val.status + '</div>';
$(that).parent().parent().append('foo');
});
但是,在此情况下,AJAX请求的this
回调中的success
等于发起请求的jqXHR
对象,而不是你所追求的DOM
元素,所以我们必须将var that = this
移到更远的地方;
var that = this;
$.ajax({
type: 'GET',
dataType: 'json',
cache: false,
url: 'barfoochakalaka',
success: function(response) {
$.each(response, function(index, val) {
var content = '<div class="link-history">' + val.date + ', ' + val.userid + ', ' + val.status + '</div>';
$(that).parent().parent().append('foo');
});
}
})
答案 1 :(得分:3)
var $this = $('#Selector').parent().parent();
$.ajax({
type: 'GET',
dataType: 'json',
cache: false,
url: 'barfoochakalaka',
success:
function(response) {
$.each(response, function(index, val) {
var content = '<div class="link-history">'+ val.date + ', ' + val.userid + ', ' + val.status + '</div>';
$this.append('foo');
});
}
})
<小时/> 编辑:
将.parent().parent()
添加到原始选择器,因此您不会为每个循环调用此
答案 2 :(得分:0)
响应可能不是数组,只是一个字符串。尝试将响应分配给元素,然后使用选择器在执行.each()
之前获取该元素中的所有子元素。答案 3 :(得分:0)
您的回复不是元素的对象,它很可能是您的选择器(?)的字符串列表,如果它然后使用$($(this))
。