1

重複の可能性:
ajax 成功コールバック関数内の $(this) にアクセスする方法

なぜこれが機能しないのか理解できません:

    $("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 の観点から要素からプロパティとメソッドを見つける方法はありますか? 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 に渡されるコンテキスト オプションのオブジェクトです。コンテキストが指定されていない場合、これは Ajax 設定自体への参照です。

于 2012-09-30T03:09:32.370 に答える