经过jquery ajax成功$(这)不起作用

时间:2014-06-12 03:30:13

标签: jquery ajax this innerhtml

我是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>');
          });
    });
}

3 个答案:

答案 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>');
          });
    });
}