使用jquerymobile动态页面
我已经使用jQuery很长一段时间了,并在jQuery Mobile上迈出了第一步 我使用index.html作为我的应用程序的jquerymobile&design,它一加载就从content.php(所有页面的列表视图)调用内容 我使用page.php作为页面内容模板,该模板根据变量显示内容,如下所示: page.php?id=01 page.php?id=02 page.php?id=03。。。等等 我想最好的办法是在index.html上有两个jQm“页面”,一个用于应用程序的主页,另一个用于从page.php?id=xx动态加载内容。这样,我就不必在我的应用程序加载后立即加载所有内容使用jquerymobile动态页面,jquery,jquery-mobile,Jquery,Jquery Mobile,我已经使用jQuery很长一段时间了,并在jQuery Mobile上迈出了第一步 我使用index.html作为我的应用程序的jquerymobile&design,它一加载就从content.php(所有页面的列表视图)调用内容 我使用page.php作为页面内容模板,该模板根据变量显示内容,如下所示: page.php?id=01 page.php?id=02 page.php?id=03。。。等等 我想最好的办法是在index.html上有两个jQm“页面”,一个用于应用程序的主页,另一
如何做到这一点?如何使列表视图项转到下一页并将正确的内容加载到其中?只需使用
或从jquery阿森纳创建链接,当您将内容添加到所需的div时-
不推荐使用:使用jquery mobile中的.page()
当前:调用.trigger('create')
(此事件添加样式和控件)。
详细说明见我的常见问题解答:工作示例:
创建一个空的jqMobile页面(具有适当数据角色的div,id为id=“dynamicPage”)
获取菜单链接的id,并将其作为空页面的标题属性插入
$(“#AppMain菜单a”).live(“单击”,功能(evt){
var whatpageto=$(this.attr('id');
$('#dynamicPage').attr('title','dpage-'+whatpageto);//标题看起来像title=“dpage linksid”
});
按如下方式加载数据:
$('#dynamicPage').bind('pageshow',function(){
$('#dPage').html(''')//加载数据时设置动画
var whatpage=$(this.attr('title');//获取我们之前更改的页面标题
var whatpage=whatpage.replace(“dpage-”,“”);//从标题中删除“dpage-”部分,我们就有了自己的id。
var whatpage2='path/to/pagewhereyourcontentis.html';//内容来自何处?url或文件路径
$.get(whatpage2,函数(数据){//从外部文件加载内容
$('#dynamicPage').html(data);//将数据插入jqMobile页面(这是一个div)。
$('#dynamicPage').page();//重新呈现页面,否则动态内容不会设置样式。
});
});
希望这有帮助。问题?以下是我为我的页面解决这个问题的方法
$("#masterList").empty();
var listItems = "";
$.each(data.Messages, function (i, item)
{
listItems += "<li><div><a href='#messageData' onclick='$(" + // Use a click handler to set the attr of detailPage div
'"#detailPage").attr("detailId", "'+ item.Id + // my JSON item has an ID
'")' + "'>"; // note the crazy quoting
listItems += "Test about the item</a></li>";
}
$("#masterList").append(listItems);
$(“#主列表”).empty();
var listItems=“”;
$.each(数据、消息、函数(i、项)
{
列表项+=“”;
}
$(“#主列表”)。附加(列表项);
对于detailPage,我使用pageshow事件处理程序使用id获取JSON对象,并根据detailId属性中的id加载细节项,类似于loadDetail($(“#detailPage”).attr(“detailId”))和我的loadDetail函数完成了其余工作
不幸的是,这将破坏jQuery mobile的URL策略。因为所选项目存储在页面本身中-这不好。我将尝试使用HTML页面的外部链接,并将id作为参数传递。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0"/>
<link rel="stylesheet" href="jquery.mobile-1.0.1.css" />
<title> Hello World </title>
<script src="jquery.js"></script>
<script src="jquery.mobile-1.0.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(e) {
$('#omtList').html('<ul data-role="listview" data-split-icon="delete" data-split-theme="d"> <li><a href="index.html"><h3>Broken Bells</h3><p>Broken Bells</p></a><a href="lists-split-purchase.html" data-rel="dialog" data-transition="slideup">Purchase album </a></ul>').trigger('create');
});
</script>
</head>
<body>
omt
<div>
<div id="omtList">
</div><!--/content-primary -->
</body>
</html>
你好,世界
$(文档).ready(函数(e){
$('omtList').html('ul data role=“listview”data split icon=“delete”data split theme=“d”>).trigger('create');
});
天哪
虽然这通常是可行的,但页面加载时没有样式设置。我正在尝试将page.php?id=01中的内容加载到已经设置样式的现有index.html中。这样做的唯一目的是破坏加载页面的历史记录功能。但这只需一个普通的AJAX调用即可完成。我会编辑这篇文章。但是在你使用它之前…请看一下jquerymobile.com上的文档是如何制作的。这是一个很好的例子。你不应该让jqm以这种方式工作。只需创建一个页面并链接其他页面。jqm将使用AJAX加载它们并附加到DOM。你会得到问题最后描述的内容以及更多内容。而且只有首先加载e homepage。您可以(事实上应该)自己创建整个页面,而无需编写任何javascript。这是使用jqm时的主要想法。我使用的是jqm beta2,$('#dynamicPage')。page()不呈现页面。可以使用$('#…')重新呈现UI。listview('refresh')),等等。更多的讨论这通常不是一个好主意,像这样乱搞jquerymobile。
$("#masterList").empty();
var listItems = "";
$.each(data.Messages, function (i, item)
{
listItems += "<li><div><a href='#messageData' onclick='$(" + // Use a click handler to set the attr of detailPage div
'"#detailPage").attr("detailId", "'+ item.Id + // my JSON item has an ID
'")' + "'>"; // note the crazy quoting
listItems += "Test about the item</a></li>";
}
$("#masterList").append(listItems);
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0"/>
<link rel="stylesheet" href="jquery.mobile-1.0.1.css" />
<title> Hello World </title>
<script src="jquery.js"></script>
<script src="jquery.mobile-1.0.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(e) {
$('#omtList').html('<ul data-role="listview" data-split-icon="delete" data-split-theme="d"> <li><a href="index.html"><h3>Broken Bells</h3><p>Broken Bells</p></a><a href="lists-split-purchase.html" data-rel="dialog" data-transition="slideup">Purchase album </a></ul>').trigger('create');
});
</script>
</head>
<body>
omt
<div>
<div id="omtList">
</div><!--/content-primary -->
</body>
</html>