2012-09-25 33 views
1

我是Jquery Mobile的新手,我已经尝试了所有解决此问题的方法。我有第一页是index.php,这个页面从js中加载按钮,从json获取信息。 第二页(FichaTecnica.php)显示了该酒的信息(通常是西班牙语,对不起)。问题是我必须刷新浏览器中的页面来加载信息,如果我回到第一页,我也必须刷新以加载按钮。jQuery Mobile js只适用于刷新页面

任何帮助,将不胜感激。

谢谢。

的index.php

<div data-role="page" id="main">  
    <div data-role="header">   
     <h1> 
      Page 1 
     </h1>  
    </div>  

    <div data-role="content"> 
     <div> 
      <img src="images/Vinos separador [Negro].png" /> 
     </div> 
     <div data-role="controlgroup" data-role="controlgroup" id="buttonGroup"> 
     </div> 


     <div> 
      <img src="images/P Venta Separador [Negro].png" /> 
     </div> 
     <div data-role="controlgroup" data-role="controlgroup" id="buttonGrouploc"> 
     </div> 



    </div>  

    <div data-role="footer">    
    </div> 
</div>    

<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script> 
<script src="js/variedadeslist.js"></script> 

加载在第一页

 var url="http://localhost/CavaOnline/json_variedades.php";  
     var buttonHtmlString = "", pageHtmlString = ""; 

     var jsonResults; 

    $.getJSON(url,function(data){ 
     jsonResults = data.items; 
     displayResults();  
    }); 


    function displayResults() { 

     for (i = 0; i < jsonResults.length; i++) { 
      buttonHtmlString += '<a data-transition="slide" href="FichaTecnica.php?id=' + jsonResults[i].id + '" id="'+ jsonResults[i].id +'" data-role="button">' + jsonResults[i].nombre + '</a>'; 
     } 

     $("#buttonGroup").append(buttonHtmlString); 
     $("#buttonGroup a").button(); 
    } 

按钮JS文件第二页 “FichaTecnica.php”

<div data-role="page" id="pagina2"> 
     <div data-role="header"> 
      <h1> 
       Header 
      </h1> 
     </div> 

     <div data-role="content"> 

      <div> 

       <div data-role="collapsible" data-collapsed="false"> 
       <h1>El Vino</h1> 
       <div id="descripcion"> 

       </div> 
       </div> 

       <div data-role="collapsible" data-collapsed="false"> 
       <h1>Cata</h1> 
       <div id="cata"> 

       </div> 
       </div> 

      </div> 

      <a data-role="button" id="botonMarcas"></a> 

     </div> 

     <div data-role="footer"> 
      <h1> 
       footer 
      </h1> 
     </div>    
    </div> 

<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script> 
<script src="js/descripcionlist.js"></script> 

的js加载在第二页

$('#pagina2').live('pageinit',function(event){ 

var id = getUrlVars()["id"]; 


$.getJSON('http://localhost/CavaOnline/json_variedades.php?id='+id, function(variedades) { 


$.each(variedades, function(index, variedad) { 

    $('#descripcion').append('<p>'+variedad[id - 1].descripcion+'</p>'); 
    $('#cata').append('<p>'+variedad[id - 1].cata+'</p>'); 
    $('#botonMarcas').append().attr("href", 'FichaTecnica.php?id=' + variedad[id - 1].id); 


}); 

}); 

function getUrlVars() { 

var vars = [], hash; 

var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 

for(var i = 0; i < hashes.length; i++) 

{ 

    hash = hashes[i].split('='); 

    vars.push(hash[0]); 

    vars[hash[0]] = hash[1]; 

} 

return vars; 

}信息

+0

在调用上述所有内容之前,您是否在等待DOM加载?我无法看到.ready()的调用... –

+0

啊,但在jQuery手机中,您使用['pageinit'](http://jquerymobile.com/test/docs/api/events.html); - ) –

+0

啊,我不知道。 –

回答

0

这将是最好有你pageinit代码之前连接好你带入页面。因此,请确保您将JS作为首页的一部分。

线了paginit,就像这样:

$(document).on('pageinit', '#pagina2', function(e) { 
    /* TODO: Page 2 init code */ 
}); 
0

您最初的页面没有加载正确的,因为你正在构建的页面错误(由包括JS在其他元素加载后的底部)。因此,JavaScript仅在页面刷新后才生效,因为此时JS已经存在于DOM中。

下面是基本的网页标记:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Page Title</title> 

    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0-rc.2/jquery.mobile-1.2.0-rc.2.min.css" /> 
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.2.0-rc.2/jquery.mobile-1.2.0-rc.2.min.js"></script> 
</head> 

<body> 
    ...content goes here... 
</body> 
</html> 

另外,如果你是包括任何自定义的JS,这将改变页面(如您的pageint),他们应该被载入后jQuery是加载,但在此之前jQuery Mobile的被加载(所以在头部插入这个JS文件)。

+0

谢谢!我已经尝试过了,我仍然需要刷新两个页面才能加载第一个按钮,并在第二个页面加载可折叠的信息。 – Walter