1

可能重复:
如何访问 $(this) inside ajax 成功回调函数

我不明白为什么这不起作用:

    $("body").on("click", "a.linky", function () {
        var contentID = $(this).attr("contentID");

        var jsongo = 'id=' + contentID;
        $.ajax({
            type: 'POST',
            url: '/Controller/Action/',
            data: jsongo,
            success: function (msg) {
                $(this).html(msg);
                alert(msg);

            }
        });

    });

我能够显示警报,但我无法为单击的链接设置 html... 有什么方法可以从 JQuery 的角度从 Elements 中找到属性和方法?我发现来自 Jquery 文档的参考非常令人困惑。

从上面的代码设置链接内容的正确方法应该是什么?

谢谢

4

1 回答 1

2

尝试这样做

    $("body").on("click", "a.linky", function () {
        $this = $(this);
        var contentID = $(this).attr("contentID");

然后在你的ajax里面

  $this.html(msg);

引用正确的元素

编辑:

正如评论中更多解释的那样,它正在发生,因为this在 ajax 调用内部没有引用触发事件的元素,而是引用了 ajax 设置。请参阅ajax 文档

所有回调中的 this 引用是设置中传递给 $.ajax 的 context 选项中的对象;如果未指定上下文,则这是对 Ajax 设置本身的引用。

于 2012-09-30T03:09:32.370 回答