<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
……
</head>
<body>
<div data-role="page" id="allShops">
<div data-role="header" data-theme="b">
<h1>请选择门店</h1>
</div>
<div data-role="content">
<div data-role="fieldcontain">
<div>
<table style="width:100%; border:1px;" id="shopItems"></table>
</div>
</div>
</div>
<script type="text/javascript">
//打开分店列表页时动态从数据库中获取全部分店信息
$(document).ready(function () {
$("#allShops").on("pageinit", function () {
$.ajax({
type: "post",
url: "../Models/allShops.ashx",
cache: false,
async: false,
dataType: "text",
success: onSuccess,
error: function (xhr) {
alert(xhr.responseText);
}
});
});
function onSuccess(data, status) {
var trNode;
var tdNode;
var divNode;
data = $.parseJSON(data);
$.each(data, function (index, item) {
问题一
//alert('跟踪');-------如果这地方手动确认,则下面的会动态添加,如果注释则没有动态添加
//我怀疑是执行了,只是页面加载顺序问题
if (index % 3 == 0) {
trNode = $("<tr></tr>");
$("#shopItems").append(trNode);
}
tdNode = $("<td></td>");
divNode = $("<div></div>");
divNode.append("<a href='javascript:void(0)' data-role='none' data-rel='back' onclick='setShopID(\"" + item.ShopsID + "\")' style='text-decoration:none;color:#0094ff' id='" + item.ShopsID + "'>" + item.ShopsName + "</a>");
tdNode.append(divNode);
trNode.append(tdNode);
})
}
function setShopID(shopID) {
sessionStorage.shopID = "";
//$("a").click(function () {
//sessionStorage.shopID = $(this).attr("id");
//alert("已经保存门店ID:" + sessionStorage.shopID);
//});
sessionStorage.shopID = shopID;
alert("已经保存门店ID:" + sessionStorage.shopID);
}
});
</script>
</div>
</body>
</html>
$("#allShops").on("pageinit",
问题已经找到处理方法,但目前不知道什么原因,绑定pageshow时可以正常显示,但pageinit时就不可以。但我打开页面时能看到闪烁一下,页面中有动态生成内容,只是没有显示。望园友们能给明白解释,谢谢
也有可能 你那个循环需要一点时间执行
append 后 trigger('create') 一下试试
另外 你这个是只页面初始化的时候调用一次ajax(pageinit )还是每次page显示都需要调用(pageshow )要分清。