JQuery移动动态页面,更改页面后带有listview

JQuery移动动态页面,更改页面后带有listview,listview,jquery-mobile,dynamic-data,Listview,Jquery Mobile,Dynamic Data,我的JQuery移动应用程序试图动态填充页面的listview,这让我左右为难。我启动并运行了它,但发现它只有在我直接请求页面(例如mydomain.com/page.html)时才起作用。当我从另一个JQM页面链接到该页面时,它只有在使用浏览器中的刷新按钮后才起作用 这是我的JS代码 $(function() { var dirs=window.location.pathname.split('/'),

我的JQuery移动应用程序试图动态填充页面的listview,这让我左右为难。我启动并运行了它,但发现它只有在我直接请求页面(例如mydomain.com/page.html)时才起作用。当我从另一个JQM页面链接到该页面时,它只有在使用浏览器中的刷新按钮后才起作用

这是我的JS代码

                $(function() {
                    var dirs=window.location.pathname.split('/'),
                    current_dir =dirs[dirs.length-2];
                    var vars = [], hash;
                    var q = document.URL.split('?')[1];
                    if(q != undefined){
                        q = q.split('&');
                        for(var i = 0; i < q.length; i++){
                            hash = q[i].split('=');
                            vars.push(hash[1]);
                            vars[hash[0]] = hash[1];
                        }
                    }
                                alert(current_dir);

                    $.getJSON("../json.php",{
                        section: current_dir,
                        id: vars['id'],
                        query: vars['q']
                    }, 
                    function(json){     
                                if (json.mededeling) {
                                $("#recent").append('<li data-role="list-divider" role="heading">Mededelingen<span class="ui-li-count">'+json.mededeling.length+'</span></li>');
                                //loop through deals
                                $.each(json.mededeling,function(i,item){
                                    $("#recent").append('<li><a href="nieuws/='+item.id+
                                                        '" data-transition="slide">'+
                                                        '<h3>'+item.title +'</h3>'+
                                                        '<p>'+item.subtitle+'</p></a></li>');
                                 });
                                } 
                                if (json.nieuws) {
                                 $("#recent").append('<li data-role="list-divider" role="heading">Nieuws<span class="ui-li-count">'+json.nieuws.length+'</span></li>');
                                //loop through deals
                                $.each(json.nieuws,function(i,item){
                                    $("#recent").append('<li><a href="news.html?'+item.id+
                                                        '" data-transition="slide">'+
                                                        '<h3>'+item.title +'</h3>'+
                                                        '<p>'+item.subtitle+'</p></a></li>');
                                 });
                                }
                                if (json.onderwijs) {
                                 $("#recent").append('<li data-role="list-divider" role="heading">Onderwijs vandaag<span class="ui-li-count">'+json.onderwijs.length+'</span></li>');
                                //loop through deals
                                $.each(json.onderwijs,function(i,item){
                                    $("#recent").append('<li><a href="onderwijs/index.html?'+item.id+
                                                        '" data-transition="slide">'+
                                                        '<h3>'+item.title +'</h3>'+
                                                        '<p>'+item.speaker+'</p></a></li>');
                                 });
                                }
                                 $("#recent").listview('refresh');
                            });
                });             
$(函数(){
var dirs=window.location.pathname.split('/'),
当前_dir=dirs[dirs.length-2];
var vars=[],散列;
var q=document.URL.split(“?”)[1];
如果(q!=未定义){
q=q.分割('&');
对于(变量i=0;imededlingen'+json.mededling.length+””);
//循环交易
$.each(json.mededling,函数(i,项){
$(“#最近”)。追加(“
  • ”); }); } if(json.nieuws){ $(“#最近”).append(“
  • Nieuws'+json.Nieuws.length+”
  • ”); //循环交易 $.each(json.nieuws,函数(i,项){ $(“#最近”)。追加(“
  • ”); }); } if(json.onderwijs){ $(“#最近”).append(“
  • Onderwijs vandaag'+json.Onderwijs.length+”
  • ”); //循环交易 $.each(json.onderwijs,函数(i,项){ $(“#最近”)。追加(“
  • ”); }); } $(“#最近”).listview(“刷新”); }); });
    所以我猜这与JQM的AJAX调用有关

    我到处找,但现在我真的迷路了

    非常感谢任何让我回到trach的帮助


    谢谢

    在我第一次尝试更改事件侦听器后,它就可以工作了

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

    您好,很难在JSFIDLE上复制它(因为有多个页面)。当你打开/section\u one/?时,你能添加浏览器返回的内容吗?它输出请求的页面,但“content”div仍然为空。我很困惑,因为你说它在使用URL加载时可以工作。主要是因为pagebeforechange处理程序不是在加载第一个页面时调用的,而是在您尝试从该页面导航出去时调用的。是这样吗?在开始添加内容之前,请尝试在页面中导航。我并不是说这是解决办法,但它可能有助于澄清问题所在。类似于$page=$(当前目录);$。mobile.changePage($page,选项);很抱歉我不清楚。以前(在旧代码中)我发现了一种使用第一个JS文件中的方法将数据插入listview的方法(我更新了上面的代码)。但是,当我使用另一个JQM文件中的链接请求此页面时,这不起作用。这就是我尝试使用pagebeforechange事件的原因。