如何在jQuery Mobile中检测/查询当前正在进行的更改页面/转换?

时间:2011-05-21 12:19:12

标签: javascript jquery jquery-mobile

如何检测/查询jQuery Mobile(jQM)中当前是否正在进行更改/转换?

我的目标是在当前正在进行页面切换时阻止打开对话框。目前,在更改页面事件正在进行时打开对话框时,UI会中断。

有关于此的任何想法吗?

3 个答案:

答案 0 :(得分:2)

在JQM 1.4.0中,类ui-mobile-viewport-transitioning在转换期间添加了body标记,因此以下内容适用于我:

if (!$("body.ui-mobile-viewport-transitioning").length) {
   //do something
}else{
    console.log("Don't do it we are transitioning")
    return false
 }

答案 1 :(得分:1)

  • pagebeforeshow

在转换开始之前,在显示的页面上触发。

  • pagebeforehide

在过渡开始之前,在被隐藏的页面上触发。

  • pageshow

在转换完成后,在显示的页面上触发。

  • pagehide

在过渡完成后,在被隐藏的页面上触发。

http://jquerymobile.com/demos/1.0a4.1/#docs/api/events.html

答案 2 :(得分:0)

我没有在jQuery Mobile中找到转换状态信息,但是您可以简单地添加三个事件,一个在更改之前,一个在更改之后,另一个用于页面更改失败时。然后,保持全局变量是否正在发生转换:

window.transitioning = false;

$(document).on("pagebeforechange", function() { transitioning = true; });
$(document).on("pagechange", function() { transitioning = false; });
$(document).on("pagechangefailed", function() { transitioning = false; });

在这个例子中,我创建了一个全局变量transitioning但你可以在你认为合适的地方创建这个变量,例如:在对话框处理程序中创建局部变量而不是使用全局变量。

您现在可以像这样添加条件:

if(!transitioning) {
  // Do your stuff
} else {
  // Delegate the events by listening for pagechange and then do your stuff
}