我如何在$ .post里面引用$(this)元素

ren*_*ive 2 jquery this

我有这个代码

    $.post("recommend.php",{"jid":jid,"vid":vid,"eid":eid},function(data){
        if(data=="1")
            {
                $(this).text("Recommended");

            }
            else
                {
                    $(thelink).text("Recommend");
                }
    });
Run Code Online (Sandbox Code Playgroud)

帖子正确执行但链接上的文字没有改变,虽然数据等于1.任何帮助......

Thi*_*ter 5

this指当前的背景.在你的AJAX回调中,它与你的一个调用函数不同.

但是,您可以通过使用var $this = $(this);然后$this在回调内部而不是使用来简单地保留它$(this);

var $this = $(this);
$.post("recommend.php", {
    "jid": jid,
    "vid": vid,
    "eid": eid
}, function (data) {
    if (data == "1") {
        $this.text("Recommended");
    } else {
        $(thelink).text("Recommend");
    }
});
Run Code Online (Sandbox Code Playgroud)

当然,另一个名字也可以.例如,为了保留this很多人使用selfthat.

另一种解决方案是使用$.ajax({ context: this, ...... }));在回调中保持相同的上下文(如果未指定,则this指向传递给的选项对象$.ajax())