1

我目前正在构建一个简单的 jQuery Mobile 应用程序。目前,如果我想在页面加载之前或之后做一些事情,我使用以下调用挂钩:

显示页面时(例如插入数据/模板):

$(window).on('pageshow', function() {
        if ($('#pageId').length > 0) {

            doStuff();

        }
});

如果用户移动到新页面(并且我想保存一些值):

$(document).delegate('#pageId #buttonNext', 'click', function() {
    doStuff();
});

我有两个问题:

有没有更好、更优雅的方法来做到这一点(我相信有)?在移动设备(尤其是 iOS Safari)上,每次在 safari 关闭后重新打开应用程序时,都会再次pageshow触发该方法,例如重新进入已经完全构建的页面。有没有办法防止这种行为?

4

1 回答 1

2

如果我理解正确,您想要一个仅触发一次的事件以及在页面转换期间保存一些值的更好方法。

有几个页面事件在应用程序生命周期中只会触发一次,页面是否被多次访问都没有关系。

前两个要提到的是pagebeforecreatepagecreate,这两个事件只会在页面创建之前和期间触发一次。这也是添加动态生成内容的绝佳机会,因为 jQuery Mobile 将进一步增强其内容。

第三页事件称为pageinit,它是经典 jQuery 文档就绪的真正对应物。和前面提到的2个事件一样,它只会触发一次,但这也是jQuery Mobile内容即将增强的时刻,所以此时添加的每个动态内容都必须手动增强。这个事件对于事件绑定来说也是极好的,因为与pageshow不同的是,在你绑定事件的时候pageinit不需要担心多个事件的绑定。

Pageshow仅在使用需要正确页面高度的插件时才应使用,因为页面高度仅在显示页面时才具有实际价值。这对于像照片库、轮播这样的插件很重要,基本上所有处理图片的东西。

如果您想了解有关页面事件的更多信息,请查看此处。此外,您还可以找到 3 种不同的在页面转换之间传递/存储数据的解决方案。

于 2013-06-04T20:54:21.283 回答