Вопрос:

Вызов Jquery AJAX: $ (это) не работает после успеха

jquery ajax this

1761 просмотра

1 ответ

5265 Репутация автора

Мне интересно, почему $ (this) не работает после вызова jQuery ajax.

Мой код такой.

$('.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;
    });

Почему в этом случае не работает $ (this) после вызова ajax? Это сработало бы, если бы я использовал его до ajax, но без эффекта после.

Автор: Scott Yu - Front-End UX Источник Размещён: 08.09.2009 08:49

Ответы (1)


11 плюса

139170 Репутация автора

Решение

В обратном вызове 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;
    });
Автор: Philippe Leybaert Размещён: 08.09.2009 08:52
Вопросы из категории :
32x32