我有一个完美的jQuery ajax代码。但是我需要它来改变成功点击时触发jQuery ajax事件的按钮的类。但我在sucess:
上的代码不起作用。请参阅下面的代码。
jQuery代码
$(document).ready(function() {
$('.btn.btn-outline.btn-sm').click(function() {
var pollQId = $(this).val();
$.ajax({
type: "POST",
url: "Default.aspx/LikePoll",
data: JSON.stringify({ 'pollQId': pollQId }),
contentType: "application/json; charset=utf-8",
datatype: "json",
success: function() {
$(this).addClass("btn btn-primary btn-sm");
},
error: function(response) {
alert(response.d);
}
});
});
})
请帮帮我。非常感谢。
答案 0 :(得分:1)
成功回调中的this
不是您期望的this
,要使此参数与点击的按钮保持一致,请将context: this
作为附加参数传递给.ajax
功能
您可以从jQuery.ajax找到更多信息:
上下文
- 类型:PlainObject
- 此对象将是所有与Ajax相关的回调的上下文。默认情况下,上下文是表示Ajax设置的对象 在调用中使用($ .ajaxSettings与传递给
的设置合并 $就)。
$(document).ready(function() {
$('.btn.btn-outline.btn-sm').click(function() {
var pollQId = $(this).val();
$.ajax({
type: "POST",
url: "Default.aspx/LikePoll",
data: JSON.stringify({ 'pollQId': pollQId }),
contentType: "application/json; charset=utf-8",
datatype: "json",
// Add this param, so the `this` in the success callback
// will be the clicked button.
context: this,
success: function() {
$(this).addClass("btn btn-primary btn-sm");
},
error: function(response) {
alert(response.d);
}
});
});
})