Jquery mobile jquerymobile1.1.0:奇怪';更改前页面';行为
我有一个很大的HTML页面,上面有“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
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
事件会更好、更干净、更安全