Hun*_*unt 3 jquery jquery-mobile
我已经基于数据库创建动态列表视图,但问题是加载列表视图我必须再次刷新页面.
例如 ,
页面A.html有一个按钮,页面B.html有一个列表视图
当我点击页面A.html页面内的按钮B.html加载但列表视图不可见,当我再次刷新B.html时,列表视图加载.
页面A的代码,即点击findme页面B加载时的index.html
<div data-role="content">
<p>
<a href="findme.html" id="findMeBtn" data-role="button" data-icon="delete">Find Me</a>
<a href="index.html" data-role="button" data-icon="delete">Fingle Hunts Basic</a>
<a href="index.html" data-role="button" data-icon="delete">Communicator</a>
</p>
<p>
<div id="action">
<div id="loading-icon"></div>
<div id="msg"></div>
</div>
</p>
</div><!-- /content -->
Run Code Online (Sandbox Code Playgroud)
Page B iefindme.html的代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Find Me</title>
<link rel="stylesheet" type="text/css" href="style/jquery.mobile.css"/>
<link rel="stylesheet" type="text/css" href="style/main.css"/>
</head>
<body>
<div data-role="page" id="findme">
<div data-role="header" data-theme="b">
<a href="index.html" data-icon="back">Back</a>
<h1>VisitFingal</h1>
</div><!-- /header -->
<div data-role="content" >
<center>
<div class="vf-nav-view vf-button-panel" >
<div data-role="controlgroup" data-type="horizontal" data-fullscreen="true" >
<a href="index.html" data-role="button" style="width:30%;" data-theme="b">List</a>
<a href="index.html" data-role="button" style="width:30%;" data-theme="b">Map</a>
</div>
</div>
</center>
<div id="findMeListView">
</div>
</div><!-- End of FindMe Page -->
<div data-role="page" id="details">
<div data-role="header"><h1>Details</h1></div>
<div data-role="content"></div>
</div>
<div data-role="footer" data-theme="b" data-id="mainfoot" data-position="fixed">
<div data-role="navbar">
<ul>
<li><a href="index.html" >Home</a></li>
<li><a href="findme.html" class="ui-btn-active ui-state-persist">Find Me</a></li>
<li><a href="#">Communicatior</a></li>
<li><a href="#">Like</a></li>
<li><a href="#">Favourates</a></li>
</ul>
</div>
</div><!-- /footer -->
</div>
</body>
<script src="js/jquery-1.6.3.min.js" type="application/javascript"></script>
<script src="js/jquery.mobile.js" type="application/javascript"></script>
<script type="application/javascript">
$(document).bind( "pagebeforechange", function( e, data ) {
$.getJSON('getData.php', function(data) {
var items = [];
$page = $("#findme");
$content = $page.find("#findMeListView" );
var listViewData='<ul data-role="listview" data-filter="true" data-inset="true" data-theme="c" >';
for (var i=0; i <data.length;i++)
{
listViewData += '<li><a href="details.html?id='+data[i].id+'"><img height="95" width="95" src="'+data[i].url+'" /><h3>'+data[i].name+'</h3></li>';
}
listViewData+='</ul>';
$content.html(listViewData);
$content.find( ":jqmData(role=listview)" ).listview();
});
});
</script>
</html>
Run Code Online (Sandbox Code Playgroud)
当您使用这样的多页模板时,当您从页面A单击到页面B时,JS将被忽略.这是因为jQuery Mobile AJAX链接仅从data-role="page新页面中提取第一个元素并将其附加到当前DOM,如你可以想象这会忽略data-role="page元素之外的任何代码.
两个修复:
将JavaScript代码page B直接放在data-role="page元素中,以便在jQuery Mobile对页面进行AJAX加载时对其进行解析.
将您网站的所有代码放入一个JS包含文件中,并将其包含在<head>每个页面中; 这样,无论用户是刷新还是深入链接到网站以及他们使用jQuery Mobile的AJAX链接进行导航,您网站的所有代码都将可用.这是我的首选方法.