Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Обращение к элементу внутри метода .ajax() (https://javascript.ru/forum/jquery/8327-obrashhenie-k-ehlementu-vnutri-metoda-ajax.html)

roma86 19.03.2010 19:50

Обращение к элементу внутри метода .ajax()
 
Здравствуйте.
Есть n элементов с классом click.
При клике по такому элементу на сервер отправляется нечто и возвращается нечто:
$(".link").click(function() {
          $.ajax( {
             url : '/index.php/test/test',
             type : "POST",
             data : "id=" + $(this).attr('id'),
             success : function(data) {
                alert (data);
          },
          cache : false,
          error : function(e) {
             alert("error: " + e);
          }
          });
       });

соответственно при удачном исходе метод использует параметр success.
Как внутри этого метода обратиться к элементу с классом .click клик по которому вызвал отправку данных.
короче, не работает вот это:
....
success : function(data) {
                $(this).prev("p").html(data);
          },
....

Оно и понятно,
this
здесь это видимо сама функция. Тогда как?
Если писать просто (".click") это затронет все подобные элементы, а нужен только инициатор.
Спасибо тем кто откликнется.

Gvozd 19.03.2010 20:26

судя по вашей соседней теме, вы пытаетесь решить одну проблем с двух разных стороны.
тот вариант, который вы там придумали себе, заведомо неправильный.
могли бы создать одну тему, с указанием своих идей по решению ее.
$(".link").click(function() {
          var _this=this;//сохраняем в замыкании кликнутую ссылку
          $.ajax( {
             url : '/index.php/test/test',
             type : "POST",
             data : "id=" + $(this).attr('id'),
             success : function(data) {
                alert (data);
                $(_this).prev("p").html(data);//берем переменную _this из замыкания
          },
          cache : false,
          error : function(e) {
             alert("error: " + e);
          }
          });
       });

roma86 19.03.2010 21:52

Спасибо за ответ. Все работает.


Часовой пояс GMT +3, время: 01:43.