我试图有一个可以显示相同类型数据的页面(比如说水果)。然后我想在我的网站层次结构中的任何地方加载这个页面,但每次都使用不同的参数。
我的主页如下所示,有两个指向同一页面的链接show.html
:
<div data-role="navbar" data-iconpos="top" data-theme="a" class="nav-ecommera">
<ul >
<li>
<a href="show.html?p=apples" data-role="button">Apples</a>
</li>
<li>
<a href="show.html?p=oranges" data-role="button">Oranges</a>
</li>
</ul>
</div>
单击这两个按钮中的每一个都会show.html
在 DOM 中创建一个新的页面实例。因此,show.html 中的所有项目都将在 DOM 中具有重复的 ID。
在我的 javascript 中,我想动态填充 show.html 页面:
$('div[id="show"]').live("pagebeforeshow", function(e, data) {
var p = getUrlParameter("p");
show(p);
});
var show = function(p) {
$.ajax({
url:'http://show.com/?p='+p,
success: function(data) {
// Refresh 'show' page with new data
// First time: It's fine.
// Second time: 'show' page is duplicated in the DOM so it's messy.
}
});
}
现在第一次show.html
加载一切都很好。然而,第二次show.html
加载两次,并且 DOM 包含许多重复的 ID。
有没有办法在加载新页面之前从 DOM 中删除第一页?
或者:
有没有更好的方法可以实现我在这里想要实现的目标?
更新:show
我已经尝试在加载新页面时
删除以前的页面实例。就显示第二页而言,它起作用。但是在手动删除后,需要第二次显示第一页时会出现问题。
我认为原因是 jQuery mobile 似乎认为第一页已经加载,尽管我们手动删除了它。因此,再次访问时它不会完全重新加载第一页。我说的是这样的导航顺序:Home -> Apples -> Back to home -> Oranges -> Back to home -> Apples(这里你得到一个有缺陷的页面)。