Обновлять XML-канал по клику (jQTouch)

Недавно я создал функцию xml feed -> html javascript для приложения iPhone, которое я разрабатываю в jQTouch. Исходный Учебник и код.

Мне было интересно, знает ли кто-нибудь быстрый и простой способ обновить данные xml (снова получить канал) при нажатии на ссылку.

например. в коде:

<div id="btns">
 <ul>
  <li><a href="#feed">Go to feed</a></li> <!-- When i click this, I want the getDataFeed function to dump the data & rerun. -->
</div>
<div id="feed">
 <div id="content_from_feed_inserted_here"></div>
</div>

в javascript:

$(document).ready(function() {

function getDataFeed() {

    $('.loadingPic').show(); // show progress bar

    $.get('http://xxxxxxx.com/information.xml', function(d) {

    $(d).find('location').each(function(){

        var $location = $(this); 
        var the_data = $location.find('xml_data').text();

        var collected_data = collected_data += '<span>' + the_data + '</span>' ;
        $('#content_from_feed_inserted_here').empty().append($(collected_data)); // empty div first

        $('.loadingPic').fadeOut(1400); // remove progress bar
    });

}

// run on page load
getDataFeed();

// how do i also get it running when i click <li><a href="#feed">Go to feed</a></li>

});

Заранее большое спасибо за вашу помощь!


person Nelga    schedule 27.10.2010    source источник


Ответы (1)


Протестируйте это: переместите функцию getDataFeed() {..} за пределы готовой функции и зафиксируйте событие клика по ссылке. установите id="канал" в <a>.

function getDataFeed() {

    $('.loadingPic').show(); // show progress bar

    $.get('http://xxxxxxx.com/information.xml', function(d) {

    $(d).find('location').each(function(){

        var $location = $(this); 
        var the_data = $location.find('xml_data').text();

        var collected_data = collected_data += '<span>' + the_data + '</span>' ;
        $('#content_from_feed_inserted_here').empty().append($(collected_data)); // empty div first

        $('.loadingPic').fadeOut(1400); // remove progress bar
    });
}

$(document).ready(function() {

    // how do i also get it running when i click <li><a href="#feed" id="#feed">Go to feed</a></li>
    $('#feed').click(getDataFeed);

    // run on page load
    getDataFeed();

});
person angelcervera    schedule 27.10.2010
comment
Привет, спасибо за код, кнопка все еще не работает. Любые другие идеи? - person Nelga; 27.10.2010
comment
также - на jqtouch - не обязательно так, он довольно активен на github, плюс это потребует перезаписи приложения. Также, к сожалению, jquery mobile все еще находится только в альфа-версии и не имеет статических вкладок/заголовков, а сенча совершенно другая - объектно-ориентированный js. - person Nelga; 27.10.2010
comment
Не забудьте добавить идентификатор в тег привязки. Тест с открытой консолью firebug. Какие-то ошибки показываются? - person angelcervera; 27.10.2010
comment
Уважайте сенча и jquerymobile, вы правы. Но последняя бета jqtouch датирована октябрём 2009 года. Год для бета-версии — это много. С другой стороны, jqtouch теперь является частью Sencha Lab, так что логика в том, что jqtouch не поддерживается, нет? - person angelcervera; 27.10.2010
comment
Собственно, исправили! Используя код, как указано выше, но вместо $('#feed').click(getDataFeed()); я добавил onClick=getUV() в ссылку ‹a href=#feed› - person Nelga; 27.10.2010
comment
Я бы предпочел использовать метод id, как указано выше, поэтому я немного его протестирую, и если крайний срок приближается, используйте onclick. :) Спасибо за вашу помощь - person Nelga; 27.10.2010
comment
@Nelga Отлично, спасибо? Не упоминай об этом. ;) - person angelcervera; 27.10.2010
comment
Ах! Фиксированный. Просто нужно было удалить лишний набор скобок... Это сработало: $(#feed).click(getDataFeed); - person Nelga; 27.10.2010