Добавление HTML через jQuery .each () - PullRequest
0 голосов
/ 07 декабря 2011

В моем приложении на Rails 3.1 появилась простая проблема:

У меня есть серия div с именем класса 'feed-row':

<% @feeds.each do |feed| %>
   <div class="feed-row" data-feedid="<%= feed.id %>">  
   </div>
   <div class="clear">
   </div>
<% end %>

Идея такова:

Я соберу все div в коллекцию, зациклю на каждом элементе, передам свой тег данных на страницу, которая возвращает html-фрагмент, затем добавлю этот фрагмент в соответствующий div.

Javascript, который я должен извлечь из данных, выглядит следующим образом:

<script type="text/javascript" charset="utf-8">
    $(".feed-row").each(function(){     
        $.get("/retrieve/" + $(this).attr("data-feedid"), function(d) {         
            $(this).append(d);
        }); 
    }); 
</script>

Глядя на запросы в инспекторе Chrome, я вижу, что вызов завершается нормально и возвращает нужный фрагмент HTML.:

enter image description here

Итак, с помощью этого фрагмента HTML я хочу вставить его в строку current в моем цикле.

Проблема в этом

Ни один из моих HTML-фрагментов не появляется на моей странице - просто отсутствуют данные, извлеченные с помощью jQuery .get() метод.

Когда я проверяю элементы DOM, кажется, что внутри элементов вообще ничего не было введено:

<div class="feed-row" data-feedid="5"></div>

Я уверен, что здесь упускаю что-то простое - почемуданные, которые я опускаю через jQuery, никогда не попадают в мои элементы DOM?

Спасибо за любую помощь!

1 Ответ

3 голосов
/ 07 декабря 2011

Поскольку this в обратном вызове $.get не совпадает с обратным вызовом .each().

$(".feed-row").each(function(){    
    var self = this; 
    $.get("/retrieve/" + $(this).attr("data-feedid"), function(d) {         
        $(self).append(d);
    }); 
}); 

Я ссылался на элемент с помощью переменной self, затем использовал эту переменную в обратном вызове $.get для ссылки на элемент.

Таким образом, каждая итерация .each() будет иметь уникальную переменную self, а также уникальный обратный вызов $.get, который ссылается науникальная переменная self в своей области видимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...