Jquery Mobile:'pageshow'事件仅在Shift F5(完全重新加载)时触发,但在使用不同查询加载另一个页面或同一页面时不会触发

时间:2012-06-23 07:41:59

标签: jquery jquery-mobile mobile

这是我的page.html

的架构
<head>
    <script... jquery
    <script... jquery.mobile
    <scripts... imagemapster, autocomplete, etc...
</head>
<body>
    <div page1..
    </div>
    <div page2..
    </div>
    <my script with functions and initializations...
</body>

在我的<script>中,有一些与page1.pageshow事件的绑定。当我直接加载整个页面,确保第一次加载所有脚本时,我的脚本也正确加载并且没有任何缺陷。即使从page2回到page1,也会触发事件。

但是,当我转到另一个页面,或使用JM内置的ajax函数刷新同一页面时,我的脚本未加载,或pageshow page1未被触发。

我尝试将脚本放在page1的末尾,或者进入头部,但它仍然无法重新加载。我也不能把它放在任何涉及的div之前(所有页面中的许多标签都附有一些事件) - 因为不仅pageshow错过了,还readypageload

很抱歉,我无法显示整个代码,但您会以哪种方式工作并寻求找出问题所在?

1 个答案:

答案 0 :(得分:0)

此处的脚本只会在文档加载时触发一次

<head>
    <script... jquery
    <script... jquery.mobile
    <scripts... imagemapster, autocomplete, etc...
</head>
<body>
    <div page1..
      <script with the (page1).on(pageshow event handler)>
    </div>
    <div page2..
      <script with the (page2).on(pageshow event handler)>
    </div>
    <script here fired only once at document load>
</body>

由于您使用一个页面来包含所有实际页面,因此期望每次页面转换始终会触发它,这是非常错误的。 通常,每个页面脚本都在div [data-role = page]内编码。 确保您使用页面ID作为每个内联pageshow事件处理程序的选择器。