$(".itemInto").click(function(){
var a = $(this).siblings(".itemName").html();
$.ajax({
type: "POST",
dataType: "json",
url: "process.php",
data: {a:a},
success: function(data) {
alert (data); // 20
$(this).siblings(".itemCount").text(data); // doesn't work. Nothing happens.
}
});
});
.itemCount
是.itemInto
的兄弟姐妹。为什么我不能将data
置于其中?控制台是免费的。
答案 0 :(得分:4)
因为上下文已经改变。
尝试将context: this
添加到您的AJAX参数中。
答案 1 :(得分:3)
因为回调中的$(this)不是$(" .itemInto"),你可以这样做:
$(".itemInto").click(function(){
var a = $(this).siblings(".itemName").html();
var $_this = $(this);
$.ajax({
type: "POST",
dataType: "json",
url: "process.php",
data: {a:a},
success: function(data) {
alert (data); // 20
$_this.siblings(".itemCount").text(data); // doesn't work. Nothing happens.
}
});
});
答案 2 :(得分:1)
您可以按如下方式缓存对this
的引用:
$(".itemInto").click(function(){
var a = $(this).siblings(".itemName").html(),
$this = $(this);
$.ajax({
type: "POST",
dataType: "json",
url: "process.php",
data: {a:a},
success: function(data) {
alert (data); // 20
$this.siblings(".itemCount").text(data); // use the cached variable instead.
}
});
});
或者如果您必须使用this
,您可以使用原生bind()
方法,如下所示:
$(".itemInto").click(function () {
var a = $(this).siblings(".itemName").html();
$.ajax({
type: "POST",
dataType: "json",
url: "process.php",
data: {
a: a
},
success: function (data) {
alert(data); // 20
$(this).siblings(".itemCount").text(data);
}.bind(this)
});
});