3

jQuery ajax 呼び出しの後に $(this) が機能しないのはなぜでしょうか。

私のコードはこのようなものです。

$('.agree').live("click", function(){  // use live for binding of ajax results
      var id=($(this).attr('comment_id'));
      $.ajax({
        type: "POST",
        url: "includes/ajax.php?request=agree&id="+id,
        success: function(response) {
            $(this).append('hihi');
        }
      });
      return false;
    });

この場合、ajax 呼び出し後に $(this) が機能しないのはなぜですか? ajaxの前に使用しても機能しますが、その後は効果がありません。

4

1 に答える 1

11

jQuery ajaxコールバックでは、「this」はajaxリクエストで使用されるオプションへの参照です。DOM要素への参照ではありません。

最初に「外側」の$(this)をキャプチャする必要があります。

$('.agree').live("click", function(){  // use live for binding of ajax results
      var id=($(this).attr('comment_id'));
      var $this = $(this);
      $.ajax({
        type: "POST",
        url: "includes/ajax.php?request=agree&id="+id,
        success: function(response) {
                $this.append('hihi');
        }
      });
      return false;
    });
于 2009-09-08T08:52:32.763 に答える