第二次访问页面时,Javascript将无法运行

时间:2012-08-18 12:50:21

标签: jquery jquery-mobile

我有一个带有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

提前致谢

/安德烈亚斯

1 个答案:

答案 0 :(得分:2)

jQuery mobile documentation for events说明了这一点:

  

重要提示:使用$(文档).bind('pageinit'),而不是$(文档).ready()

     

你在jQuery中学到的第一件事就是在里面调用代码   $(document).ready()函数,所以一切都会尽快执行   DOM已加载。但是,在jQuery Mobile中,Ajax用于加载   导航时每个页面的内容都放入DOM中,并准备好DOM   处理程序仅对第一页执行。每当执行代码时   加载并创建新页面,您可以绑定到pageinit事件。

我认为pageinit只在第一次加载页面时被触发,所以如果你去一个页面,然后转到另一个页面,然后回到第一页,init事件将不会触发第二次。要解决此问题,您也可以使用pageshow事件