Jquery mobile jquerymobile1.1.0:奇怪';更改前页面';行为

Jquery mobile jquerymobile1.1.0:奇怪';更改前页面';行为,jquery-mobile,Jquery Mobile,我有一个很大的HTML页面,上面有“div”被认为是“页面”,我正在这些“div”之间交换 我添加了以下代码: $(document).bind('pagebeforechange', function(e, data) { if ( typeof data.toPage === "string" ) { console.log(data.toPage); } } 下面是控制台日志: #page-main http://ba.m.p.fr/#page-panie

我有一个很大的HTML页面,上面有“
div
”被认为是“页面”,我正在这些“
div
”之间交换

我添加了以下代码:

$(document).bind('pagebeforechange', function(e, data) {
    if ( typeof data.toPage === "string" ) {
        console.log(data.toPage);
    }
}
下面是控制台日志:

#page-main
http://ba.m.p.fr/#page-panier
http://ba.m.p.fr/#page-horaires
http://ba.m.p.fr/#page-horaires&ui-page=1-5
http://ba.m.p.fr/#page-horaire-valider

因此,有时它只是
id
有时它是整个URL。怎么回事?

我已经找到了解决办法,这不是一个解释。我的旧代码是这样的:

$(document).bind('pagebeforechange', function(e, data) {
    if ( typeof data.toPage === "string" ) {
        if (data.toPage == "page-aa" ) {
            /* code for page-aa */
        } else if (data.toPage === "page-bb" ) {
            /* code for page-bb */
        } else if (data.toPage === "page-cc" ) {
            /* code for page-cc */
        }
    }
}
现在我的新代码是这样的:我依赖于“
pagebeforeshow
”:

$("div#page-aa").on('pagebeforeshow', function(e, data) {
    /* code for page-aa */
});
$("div#page-bb").on('pagebeforeshow', function(e, data) {
    /* code for page-bb */
});
$("div#page-cc").on('pagebeforeshow', function(e, data) {
    /* code for page-cc */
});

而且它工作得完美无瑕。但这是一个解决办法,不是对我的问题的解释。无论如何,如果有人在谷歌上搜索这个问题,并阅读我的问题,也许这个变通方法会有所帮助

toPage可以是包含要转换到的页面的jQuery集合对象,也可以是要加载/转换到的页面的URL引用

// We only want to handle changePage() calls where the caller is
// asking us to load a page by URL.
if ( typeof data.toPage === "string" ) ...

如何在这些页面之间切换?您使用changePage方法、links还是两者都使用?我只使用
changePage
method,那么您何时获得第一个值,仅使用id?根据jQuery Mobile docs,在日志中“值(toPage)与触发事件的changePage()调用的第一个参数完全匹配”,您可以读取
&ui page=1-5
,这意味着是jQuery本身创建了此链接(请参阅)。这意味着有时候,甚至jQuery Mobile本身也会创建完整的URL链接,我敢肯定,以前不是这样的,因为我的应用程序在很长一段时间内都不会工作。我找到了一个解决方法(见我自己的答案)。从长远来看,使用
on()
pagebeforeshow
事件会更好、更干净、更安全