所以,我认为你在这里使用了错误的事件。从jqm 事件:
**pagebeforeshow**
Triggered on the "toPage" we are transitioning to, before the actual transition
animation is kicked off. Callbacks for this event will recieve a data object
as their 2nd arg.
**pagebeforeload**
Triggered before any load request is made. Callbacks bound to this event can call
preventDefault() on the event to indicate that they are handling the load request.
Callbacks that do this *MUST* make sure they call resolve() or reject() on the
deferred object reference contained in the data object passed to the callback.
因此,pagebeforeload可能是您切换页面需要使用的默认事件,因为它是在 LOADING 页面之前执行的,所以您看不到它。
pagebeforeshow的主要问题是,当触发此事件时,已经有一个页面正在加载并准备好显示。在此事件中调用 changePage() 只会将页面转换到要在当前显示页面之后显示的新页面放入队列中。也许使用这个事件和 jqm 站点中解释的“preventDefault()”技术可以让你获得所需的行为,但我从未尝试过,所以我无法进一步帮助你。祝你好运。
编辑:正如评论中的OP所述,问题是jqm的默认转换。如果加载了新页面,将触发自动幻灯片转换,因此将显示第一页,然后转换到 changePage() 中调用的页面。解决方案是避免这样的过渡:
$.mobile.changePage('#page', {transition:'none'});
这样,目标页面将突然显示。