2013-05-17 50 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标签。非常感谢。 –