1

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

提前致谢

/安德烈亚斯

4

1 回答 1

2

事件的jQuery 移动文档说明了这一点:

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

在 jQuery 中学习的第一件事是调用 $(document).ready() 函数中的代码,以便在加载 DOM 后立即执行所有内容。但是,在 jQuery Mobile 中,Ajax 用于在您导航时将每个页面的内容加载到 DOM 中,并且 DOM 就绪处理程序仅针对第一页执行。要在加载和创建新页面时执行代码,您可以绑定到 pageinit 事件。

我认为pageinit只在第一次加载页面时触发,所以如果你转到一个页面,然后转到另一个页面,然后返回第一页,第二次不会触发 init 事件。为了克服这个问题,您也可以使用该pageshow事件

于 2012-08-18T13:22:33.710 回答