jQuery Mobile: получение идентификатора предыдущей страницы - PullRequest
9 голосов
/ 02 октября 2011

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

Вот текущий код, который я использую:

$(document).bind("mobileinit", function(){
    $('#reviews').live('pagebeforeshow',function(event){
    var cpage = $.mobile.activePage.attr('id');
        if (cpage == 'home') {
            addPages();
        }
    });
});

Проблема в том, что, хотя он использует «pagebeforeshow», он использует идентификатор страницы, на которую он собирается перейти, в качестве активной страницы, в данном случае «рассматривает», а не домашнюю, таким образом вызывая оператор if потерпеть неудачу.

Итак, мой вопрос, в этом примере, как мне получить идентификатор предыдущей страницы, чтобы убедиться, что он на самом деле исходит со страницы #home?

Ответы [ 2 ]

22 голосов
/ 29 июня 2012

Чтобы завершить ответ: вы получите объект jQuery, поэтому для получения идентификатора страницы сделайте следующее:

$("#page-id").live('pagebeforeshow', function(event, data) {
    console.log("the previous page was: " + data.prevPage.attr('id'));
});

data.prevPage получает предыдущую страницу как объект jQuery,

.attr ('id') получает идентификатор из этого объекта jQuery.

6 голосов
/ 03 октября 2011

pagebeforeshow обработчик события фактически получает 2 параметра: событие и пользовательский интерфейс. Вы можете получить доступ к предыдущей странице из пользовательского интерфейса. Это пример из jquery-mobile docs :

$('div').live('pageshow', function(event, ui){
  alert( 'This page was just hidden: '+ ui.prevPage);
});

Эти параметры одинаковы для всех событий отображения / скрытия на 4 страницах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...