我是js和jquery的新手,请帮助我, 问题是:
$(this).html('<span class="label label-success icon-fontawesome-webfont-11"> Paid</span>');
无效。
window.onload = function() {
$(".myclass").click(function(){
var current_id = this.id;
$.ajax({
type: "POST",
url: "/ajax.php",
data:'current_id='+ current_id
}).done(function(result) {
$(this).html('<span class="label label-success icon-fontawesome-webfont-11"> Paid</span>');
});
});
}
答案 0 :(得分:2)
您可以使用$.proxy
来修复它。
$(".myclass").click(function(){
var current_id = this.id;
$.ajax({
type: "POST",
url: "/ajax.php",
data:'current_id='+ current_id
}).done($.proxy(function(result) {
$(this).html('<span class="label label-success icon-fontawesome-webfont-11"> Paid</span>');
}, this));
});
答案 1 :(得分:1)
this
变化的背景。在这种情况下,this
上下文绑定到Deferred done
处理程序的结果。在您的单击函数中,将this
的值存储在变量中。然后,稍后访问它。
$(".myclass").click(function(){
var current_id = this.id;
var $clicked = $(this);
$.ajax({
type: "POST",
url: "/ajax.php",
data:'current_id='+ current_id
).done(function(result) {
$clicked.html('<span class="label label-success icon-fontawesome-webfont-11"> Paid</span>');
});
});
另外,我不知道你为什么以你的方式指定数据,但考虑只使用一个对象,让jQuery完成工作。 data: {current_id: current_id}
。否则,您必须自己对值进行编码。
答案 2 :(得分:1)
尝试添加context,例如:
window.onload = function() {
$(".myclass").click(function(){
var current_id = this.id;
$.ajax({
type: "POST",
context: this, //add this
url: "/ajax.php",
data:{current_id : current_id},
}).done(function(result) {
$(this).html('<span class="label label-success icon-fontawesome-webfont-11"> Paid</span>');
});
});
}