Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > jQuery. Работа с динамически создаваемым списком.


Автор: nule 26.12.2011, 21:26
Приветствую!
Использую вот такой парсер rss-лент, на базе плагина jFeed. Он формирует список элементов ленты <ul>.
Код

jQuery(function() {
    jQuery.getFeed({
      url: 'xml/rss.xml',
        success: function(feed) {

            jQuery('ul.paging').append('<h2>'
            + '<a href="'
            + feed.link
            + '">'
            + feed.title
            + '</a>'
            + '</h2>');
            
            var html = '';        
            for(var i = 0; i < feed.items.length && i < 15; i++) {
            
                var item = feed.items[i];

                    html += '<li>'+'<h3>'
                + '<a href="'
                + item.link
                + '">'
                + item.title
                + '</a>'
                + '</h3>';
                
                html += '<div class="updated">'
                + item.updated
                + '</div>';
                
                html += '<div>'
                + item.description
                + '</div>'+'</li>';
                }

            $("ul.paging").append(html);
        }
    })
});

А в body заготовка под него
Код

<ul class="paging"></ul>

Лента парсится и отображается, но обратиться к элементам <li> списка для дальнейшей работы не получается.
Код
$(document).ready(function() {    
var li=$('li').html();
alert(li);
});

выдает null.
Подскажите, пожалуйста, что не так.
Спасибо!

Автор: $дмитрий 26.12.2011, 21:32
Через firebug смотри какая у тебя реальная структура

Цитата

jQuery('ul.paging').append('<h2>'

Вижу ошибку. Нельзя в ul добавлять ничего кроме li

Автор: nule 26.12.2011, 21:46
Вырезал h2. В firebug смотрел, список формируется правильно.
Код

<ul class="paging">
<li>
<li>
<li>
<li>
<li>
<li>
<li>
<li>
</ul>


Автор: $дмитрий 26.12.2011, 22:11
Т.е. проблема осталась? Дай ссылку на сайт

Автор: nule 27.12.2011, 10:54
Да, осталась. Сайта нет, могу приаттачить тестовый html и плагин

Автор: nule 27.12.2011, 11:33
Видимо, обращение к элементам происходит раньше их создания. Не знаю, как решить эту проблему :(

Автор: nule 27.12.2011, 12:50
Поставил перед обращением к элементам списка задержку setTimeout. Теперь работает. Но хотелось бы приступить к обработке сразу же по окончанию формирования списка. Как отловить это событие?

Автор: нуп 27.12.2011, 14:28
Код

jQuery(function() {
    jQuery.getFeed({
      url: 'xml/rss.xml',
        success: function(feed) {
            jQuery('ul.paging').append('<h2>'
            + '<a href="'
            + feed.link
            + '">'
            + feed.title
            + '</a>'
            + '</h2>');
            
            var html = '';        
            for(var i = 0; i < feed.items.length && i < 15; i++) {
            
                var item = feed.items[i];
                    html += '<li>'+'<h3>'
                + '<a href="'
                + item.link
                + '">'
                + item.title
                + '</a>'
                + '</h3>';
                
                html += '<div class="updated">'
                + item.updated
                + '</div>';
                
                html += '<div>'
                + item.description
                + '</div>'+'</li>';
                }
            $("ul.paging").append(html);
           rssReady();
        }
    });

   function rssReady() {
   var li=$('li').html()
    alert(li)
}
});

Автор: nule 27.12.2011, 15:56
Спасибо!  Работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)