我写了一个小脚本来添加调用.done函数的类,但是这个解决方案没有用。
$("#test").on("click", function() {
var test = "foo bar";
$.post({
type: "POST",
url: "test.php",
data: {
test: test
}
}).done(function() {
$(this).parent().parent().addClass("success");
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td><a href="#" id="test">click me</a></td>
</tr>
</table>
&#13;
答案 0 :(得分:1)
this
不一样,它指的是ajax请求的jqXHR
对象而不是事件处理程序绑定的元素,你应该先将它保存在外面,然后再使用它像变量一样:
$("#test").on("click", function() {
var _this = $(this);
var test = "foo bar";
$.post({
type: "POST",
url: "test.php",
data: {
test: test
}
}).done(function() {
_this.parent().parent().addClass("success");
});
});
答案 1 :(得分:0)
以下是在Ajax调用中使用this
的方法。首先在该变量中存储Node并使用that
变量而不是此变量。我使用GET
请求,但它也适用于POST
请求。
$("#test").on("click",function(){
var that = $(this);
var postData ={};
$.ajax({
type:"GET",
url: "https://ipinfo.io/json",//your url
data:postData,
success: function (msg) {
},
error:function (xhr, ajaxOptions, thrownError){
console.log("error occured : " +thrownError)
}
}).done(function() {
$(that).parent().parent().addClass("success");
});;
})
.success{
background-color : #fc0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td><a href="#" id="test">click me</a></td>
</tr>
</table>