jQuery Mobile - 直接加载URL,然后通过哈希加载相同的URL,在DOM中生成新的data-role =“page”div

时间:2011-09-06 13:37:32

标签: javascript jquery-mobile

这个问题可能有点难以理解,所以我会更详细地解释一下:

假设我在网站上有移动网站,网站的根目录为http://www.site.com/mobile/

如果我在URL中没有任何哈希的情况下加载此页面,那么我在DOM中获得一个带有data-role =“page”的div。如果我然后单击指向另一个页面的链接,这可能会将我带到URL http://www.site.com/mobile/#/mobile/contact.html,我会将另一个data-role =“page”链接插入到div中。这一切都很好而且正确。

但是,如果我按照此页面上的链接返回主页(但不是后退按钮)并获取URL http://www.site.com/mobile/#/mobile/,那么jQuery Mobile将重用相同的data-role =“页面“首次加载页面时存在的div,将一个新的插入到DOM中。

这会导致绑定到主页内特定ID的'pagecreate'事件的任何JavaScript都不起作用,因为ID不明确。

在检查生成的HTML时我注意到的一件事是直接加载的data-role =“page”div(而不是通过哈希Ajax加载)有一个data-url属性,该属性等于该div的id,但是当它通过散列加载时,则data-url等于散列值。我想知道这种不一致是否导致了这个问题?

1 个答案:

答案 0 :(得分:3)

jQuery Mobile使用data-url进行内部链接。它通常会填充这些自身,并使用哈希链接更改目标data-role =“page”容器。我建议任何生成的页面都有服务器预先填充的data-url(即jQuery为用户登陆的第一页做的工作 - 如果他们落在主页上,用主页信息填充data-url字段,等)。

例如:

<div data-role="page" id="home-page" data-url="<?php echo $_SERVER['REQUEST_URI'];?>">