4

在我的几个 jQuery Mobile 页面中,我需要确保在允许页面显示之前设置了某些变量。因此,我在pagebeforeshow事件中检查这些变量,如果它们不存在或不正确,我调用事件$.mobile.changePage(...)内部pagebeforeshow,然后立即返回。

在 jQuery Mobile 1.2.1 中,这似乎工作得很好。然而,现在我使用的是 jQuery Mobile 1.3.1,我注意到了一个奇怪的渲染问题。现在,当我在事件中调用 changePage 时pagebeforeshow,它​​会导致 jQuery Mobile 转换到我请求的页面,然后回到原始页面,触发pageshow事件,最后转换回我执行 changePage 的页面。

虽然不是主要问题,但它会带来不便并导致不必要的转换。有没有其他人遇到过这个问题,如果是这样,您是否能够防止不必要的转换和事件触发?谢谢!

示例代码:

$('#ConditionalPage').on('pagebeforeshow', function () {
    if (!someScopedVariable) {
        $.mobile.changePage('#RegularPage');
        return;
    }
}

$('#ConditionalPage').on('pageshow', function () {
    ... \\ Code that gets fired even though pagebeforeshow called changePage.
}
4

1 回答 1

0

我有同样的问题。当我将页面从一页更改为另一页时,一切正常。但是当我改回来时:

$.mobile.changePage("#frontPage");

页面在两页之间移动了几次。

通过移动我定义的一些功能解决了这个问题:

$(document).on('pagebeforeshow', '[data-role=page]', function () {...})

进入:

$(document).on('pageinit', '[data-role=page]', function () {...})
于 2013-08-19T08:15:23.930 回答