0

所以基本上我所做的是,当用户在第一页时,我尝试获取内容并将其放入其他页面,我需要在元素上调用刷新,这样我就不会丢失 css,但我在这部分中不断出错。总是用户不在的页面给我错误

html

    <div class="wrapper">
      <ul  data-role="listview" class="news_list"></ul> </div>
   </div>

调用函数

$(document).ready(function(e) {
        get_latest_news( 1 , 'http://www.xxx.com' , 0 );
    })

主功能

function get_latest_news(id , link_ , refresh_ ){


        var w = $('#'+id).find('.wrapper');
        w.hide();
        w.find('.news_list').html('');
       jQuery.support.cors = true;
        $.ajax({
            url :  link_ ,  
            success:function(data){
                var ul ='' ;
                  $.each( data.posts , function ( k , v ){
                        ul += '<li><h3><a href="#each_news">'
                        +v.title+'</a></h3>'+
                        '<p > '+v.date+' </p></li>';
                    });
                    w.find('.news_list').append(ul);
                    w.find('.news_list').listview('refresh');
                    w.show();
            } 

        })

    }

我明白了

Error: cannot call methods on listview prior to initialization; attempted to call method 'refresh'

在这一行

w.find('.news_list').listview('refresh');

我把它改成

 w.find('.news_list')listview().listview('refresh');

现在我明白了

TypeError: parentPage[0] is undefined
[Break On This Error]   

parentId = parentUrl || parentPage[ 0 ][ $.expando ],
4

1 回答 1

0

您的主要问题是document ready,它不能用于初始化jQuery Mobile代码。它将在将jQuery Mobile页面加载到DOM. 这就是为什么jQuery Mobile有自己的初始化内容的方式,它被称为页面事件:

假设您有一个带有 id 的页面index,您可以像这样初始化它:

$(document).on('pagebeforeshow', '#index', function(){       
    //Call your ajax here
});

要了解有关jQuery Mobile页面事件以及它们如何工作的更多信息,请查看我的文章或在此处找到它。

如果您有一个带有 id 索引的页面,您的代码应该如下所示:

$(document).on('pagebeforeshow', '#index', function(){
    get_latest_news( 1 , 'http://www.xxx.com' , 0 );
});

pagebeforeshow是您要在此处使用的事件,因为它将在页面即将显示之前触发,因此有足够的时间AJAX在页面显示之前触发调用和填充列表视图。

其他页面事件可以在这里找到。

于 2013-03-23T07:33:08.607 回答