2012-07-03 8 views
0

Я пытался создать базовый читатель RSS-каналов, используя PhoneGap и JQuery Mobile. Сначала загружается страница, и для появления фидов требуется время. Я пытаюсь добавить аккордеон для каждого сообщения, чтобы пользователь мог увидеть заголовок сообщения и расширить сообщение, если он заинтересован. Это фрагмент кода я использовал:Как получить динамический JQuery Mobile Accordion?

for (var i = 0; i < result.feed.entries.length; i++) { 
    var entry = result.feed.entries[i]; 
    var title = entry.title, 
    link = entry.link, 
    description = entry.contentSnippet, 
    pubDate = entry.publishedDate; 
    feedItem = feedItem + '<div data-role="collapsible" data-theme="a" data-content-theme="a"><h3><a href="' + link + '>'; 
    feedItem = feedItem + '<span class="feeditemtitle">' + title + '</span>'; 
    feedItem = feedItem + '</a></h3>'; 
    feedItem = feedItem + '<h6>' + pubDate + '</h6>'; 
    feedItem = feedItem + '<p>' + description + '</p></div>'; 
} 

Я могу получить сообщения на странице, но нет аккордеона. Он отображает сообщения как обычный HTML. Я предполагаю, что это потому, что сообщения загружаются после страница загружается. Может ли кто-нибудь помочь мне в этом?

ответ

3

Вы должны обновления загруженного контента.

Предполагая, что добавляется к этому узлу <div id="loaded-content" data-role="collapsible-set"></div> вы должны сделать:

$('.loaded-content').collapsibleset('refresh'); 

Вы можете посмотреть на мою скрипку, которая эмулирует вызов Ajax и создать аккордеон с задержкой: http://jsfiddle.net/ooflorent/FkT8H/

+0

Ух ты, как шарм! Как ты сказал, я завернул все это в новый div и добавил содержимое к нему. И я вызвал обновление в конце цикла. Спасибо за вашу помощь! Это решает мою проблему! –

+0

@Florent ссылка не работает, можете ли вы ее обновить? Я ищу подобное решение – pzo

0
for (var i = 0; i < result.feed.entries.length; i++) { 
    var entry = result.feed.entries[i]; 
    var title = entry.title, 
    link = entry.link, 
    description = entry.contentSnippet, 
    pubDate = entry.publishedDate; 
    feedItem = feedItem + '<div data-role="collapsible" class="accordItem" data-theme="a" data-content-theme="a"><h3><a href="' + link + '>'; 
    feedItem = feedItem + '<span class="feeditemtitle">' + title + '</span>'; 
    feedItem = feedItem + '</a></h3>'; 
    feedItem = feedItem + '<h6>' + pubDate + '</h6>'; 
    feedItem = feedItem + '<p>' + description + '</p></div>'; 
    if(i == result.feed.entries.length-1){ 
     $(".accordItem").collapsible(); 
    } 
} 
+0

JQuery Mobile является должен добавить аккордеон с '' div data-role = "collapsible"> 'self. Я пытаюсь понять, почему он не работает, поскольку содержимое загружается после загрузки страницы. –

+0

попробуйте это. Я добавил класс в div и функцию jquery mobile, которая должна сделать каждый div элементом аккордеона. – maxhud

+0

Нет. Это просто не работает :( –

Смежные вопросы