2

我用 jQuery Mobile 制作了一个移动网页。.ajax()我在页面加载时使用 jQuery 的方法加载推文。它可以工作,但是当我通过单击链接更改页面时,推文将不再加载。

这是HTML:

<ul data-role="listview" data-divider-theme="c" data-inset="true" id="tweets">
    <li data-role="list-divider">Latest Tweets</li>
</ul>

Javascript:

$(document).bind('pageinit',function(){
    $.ajax({
        url:'https://api.twitter.com/1/statuses/user_timeline/LicsonLee.json',
        dataType:'jsonp',
        success:function(data){
            $.each(data,function(i){
                if(i < 5){
                    var tweet = data[i];
                   $('#tweets').append($('<li/>').html('<a href="https://twitter.com/'+tweet.user.screen_name+'/status/'+tweet.id_str+'" data-rel="external"><h4>'+tweet.text+'</h4><p>at '+tweet.created_at+'</p></a>'));
                 }
            });
            $('#tweets').listview('refresh');
        }
    });
});

有问题的页面

目前的进展

我试过 Gajotres 的答案,但它仍然只工作一次。这些页面是通过 AJAX 加载的。我还检查了其他页面的 HTML 结构是否正确。我仍然无法弄清楚为什么会这样。

任何帮助将不胜感激。

4

1 回答 1

4

解决方案

在这种情况下不应该使用:

$(document).bind('pageinit',function(){

它只会触发一次,而是应该使用它:

$(document).bind('pagebeforeshow',function(){

编辑 :

这应该这样做:

$(document).on('pagebeforeshow', '[data-role="page"]', function(){   

如果您想了解更多相关信息,请查看我的文章,更透明的是我的个人博客。或者可以在这里找到。

编辑 2:

此解决方案有效:

$(document).on('pageshow',function(){
    $.ajax({
        url:'https://api.twitter.com/1/statuses/user_timeline/LicsonLee.json',
        dataType:'jsonp',
        success:function(data){
            $('#tweets *:not([data-role=list-divider])').remove();
            $.each(data,function(i){
                if(i < 5){
                    var tweet = data[i];
                    $.mobile.activePage.find('#tweets').append($('<li/>').html('<a href="https://twitter.com/'+tweet.user.screen_name+'/status/'+tweet.id_str+'" data-rel="external"><h4>'+tweet.text+'</h4><p>at '+tweet.created_at+'</p></a>'));
                }
            });
            $.mobile.activePage.find('#tweets').listview('refresh');
        }
    });
}); 

每次您附加内容时,它都会附加到#tweets第一页,这只会将其附加到当前活动页面。

于 2013-02-01T12:36:16.107 回答