2013-05-17 94 views
2

頁面feed.html在從瀏覽器調用它的時候正常工作,但是當它從另一個頁面通過a href="feed.html"頁面調用時調用,但是listview裏面沒有顯示。重定向後jQuery Mobile listview刷新

適用於feed.html的腳本包含$('#feedList').listview('refresh');,它在直接url調用時工作正常。

所以每次我需要刷新頁面重定向後工作。

getfeed.js:

var newsfeeds; 

    $('#feedListPage').bind('pageinit', function(event) { 
     getFeedList(); 
    }); 

    function getFeedList() { 
     $.getJSON(serviceURL + 'getfeeds.php', function(data) { 
      $('#feedList li').remove(); 
      newsfeeds = data.items; 
      $.each(newsfeeds, function(index, newsfeed) { 
       $('#feedList').append('<li><a href="feeddetails.html?id=' + newsfeed.id + '">' + 
       '<img src="' + newsfeed.img + '"/>' + 
       '<h4>' + newsfeed.title + '</h4>' + 
       '<p>' + newsfeed.desc + '</p>' + 
       '</a></li>'); 
      }); 
      $('#feedList').listview('refresh'); 
     }); 
    } 

僅此代碼工作正常,但是當它從另一個頁面調用它不刷新列表。

+0

是否使用多個HTML頁面或你有你的所有一個html文件中的頁面? – Gajotres

+0

幾個html頁面正在從面板的'右推板'調用。 –

回答

2

這是一個瘋狂的猜測,但我想我知道你的情況有什麼問題。

爲了理解這種情況,您需要了解jQuery Mobile的工作原理。它使用ajax來加載其他頁面。

第一頁正常加載。它的HEAD和BODY被加載到DOM中,並且它們在那裏等待其他內容。當第二頁被加載時,只有它的BODY內容被加載到DOM中。所以,當你直接打開你的頁面,你的JavaScript被放置在一個HEAD,JavaScript將執行成功,但如果你打開其他HTML文件,它的JavaScript在頭,它將被丟棄,因爲只有BODY將被加載。

如果您想了解更多有關這個問題,以及如何解決它(+工作溶液)看看我的其他答案:Why I have to put all the script to index.html in jquery mobile

+0

我不知道如果它是一個好方法或不,但我測試把jquerymobile和jquery.js到所有的html文件。 沒有工作! –

+0

將jQuery.js和jQuery Mobile放入所有文件並不意味着什麼,它不會解決任何問題。如果您閱讀我的其他答案,則應將整個JavaScript放在主/第一個html文件中,或放置在除main/first之外的所有頁面的BODY標記中。 – Gajotres

+1

太棒了!你的其他答案鏈接幫助了我,實際上它只需要爲你添加一個'rel =「external」''href標籤。非常感謝。 –