Как обнаружить / запросить текущую страницу изменений / перехода в jQuery Mobile? - PullRequest
3 голосов
/ 21 мая 2011

Как я могу определить / запросить, выполняется ли в jQuery Mobile (jQM) страница изменения / переход?

Моя цель - не открывать диалог, когда в данный момент происходит переключение между страницами. В настоящее время пользовательский интерфейс прерывается, когда открывается диалоговое окно, когда происходит событие изменения страницы.

Есть идеи по этому поводу?

Ответы [ 3 ]

2 голосов
/ 08 января 2014

В 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 голос
/ 22 мая 2011
  • pagebeforeshow

Инициируется на отображаемой странице до начала ее перехода.

  • pagebeforehide

Инициируется настраница скрыта до начала ее перехода.

  • pageshow

Инициируется на отображаемой странице после завершения ее перехода.

  • pagehide

Запускается на скрытой странице после завершения перехода.

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

0 голосов
/ 04 июля 2013

Я не нашел информацию о состоянии перехода в 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...