我有一个带有listview的index.php,其中包含profile.php的链接,它带有一个带有特定ID的id参数:
<div data-role="content">
<div class="choice_list">
<ul data-role="listview" data-inset="true" >
<li><a href="profile.php?id=1" data-transition="slidedown"><img src="martin.jpg"/>Martin</a></li>
<li><a href="profile.php?id=2" data-transition="slidedown"><img src="liisa.jpg"/>Liisa</a></li>
</ul>
</div>
</div>
在profile.php中,我包含了我的profile.js文件,该文件必须运行一堆内容:
$(document).ready(function() {
// Loads specific user data via API calls
});
问题:当我第一次访问profile.php时,一切正常,但再次访问时,我的Javascript(profile.js)将无法运行。我知道之前已经问过类似的问题,我已经检查了很多问题,但我并没有真正理解答案,而我尝试的几个解决方案根本没有用(试图阻止jqm从页面缓存和诸如此类的东西)。是否有一个可以应用于我的代码的这个问题的简单解决方案?
使用jquery.mobile-1.0.1.js
提前致谢
/安德烈亚斯
答案 0 :(得分:2)
jQuery mobile documentation for events说明了这一点:
重要提示:使用$(文档).bind('pageinit'),而不是$(文档).ready()
你在jQuery中学到的第一件事就是在里面调用代码 $(document).ready()函数,所以一切都会尽快执行 DOM已加载。但是,在jQuery Mobile中,Ajax用于加载 导航时每个页面的内容都放入DOM中,并准备好DOM 处理程序仅对第一页执行。每当执行代码时 加载并创建新页面,您可以绑定到pageinit事件。
我认为pageinit
只在第一次加载页面时被触发,所以如果你去一个页面,然后转到另一个页面,然后回到第一页,init事件将不会触发第二次。要解决此问题,您也可以使用pageshow
事件