2013-07-22 2 views
0

ситуация выглядит следующим образом:JQuery Mobile: changepage на другую страницу, не показывая Page

Учитывая 3 Страницы: Pag_A, Pag_B и Pag_C.

Пользователь начинает с «Pag_A», Pag_A переходит на «Pag_B», Pag_B оценивает некоторые коды, которые приводят к переходу на «Pag_C».

Я пробовал все события JQuery и ни один из них не удовлетворил меня. Ближайший подход использует «» pagebeforecreate события Pag_B, как показано ниже:

$(document).on('pagebeforecreate', '#Pag_B', function(e){ 
if (someCondition==true){ 
    $.mobile.changePage('#Pag_C'); 
    } 
}); 

Он работает хорошо, за исключением того, что Pag_B показан пользователю ..... Как я могу иметь плавный переход, не показывая Pag_B ???

Я попытался вставить: (до $ .mobile.changePage ('# Pag_C');)

e.preventDefault(); 
e.stopPropagation(); 
('Pag_B').remove(); 

Все они бесполезны ....

Я попытался тоже:

'pagebeforecreate' 
'pagebeforeshow' 
'pagebeforecreate' 
'pagecreate' 

Все они beahave точно так же .... то есть, это ужасно отображается Page_B ...

+0

Как насчет оценки ваших условий, когда что бы ни случилось, что приводит пользователя к 'Page_B'? Если вы перейдете к 'Page_B', щелкнув что-нибудь, добавьте оценочный код в обработчик события клика для этой кнопки (или что-то еще). Таким образом, вам не нужно гадать в jQM-коде. – Jasper

ответ

1

Заканчивать АНИ, есть ли у вас т это было?

http://api.jquerymobile.com/pagebeforeshow/

+0

Да, я протестировал после того, как вы отправили сообщение, битву же .... чем использовать 'pagebeforecreate' –

+0

Итак, ваша логика заключается в том, что это шоу C вместо B еще показывает B? Разве вы не должны делать это на странице A до вызова шоу B от A? – verbanicm

+0

Это истинный приятель, логика перенаправления находится на странице__B, а не на странице_А .... Если никакого другого решения не найдено, я должен переосмыслить все это .... Спасибо .... Я буду ждать, пока кто-нибудь не даст мне вспышку ... –

1

Это лучшее решение:

Рабочий пример: http://jsfiddle.net/Gajotres/GPUay/

$(document).on('pagebeforechange', function(e, data){ 
    var dummy = false; 

    var to = data.toPage, 
     from = data.options.fromPage; 

    if (typeof to === 'string') { 
     var u = $.mobile.path.parseUrl(to); 
     to = u.hash || '#' + u.pathname.substring(1); 
     if (from) from = '#' + from.attr('id'); 

     if (from === '#index' && to === '#second' && dummy === true) { 
      e.preventDefault(); 
      e.stopPropagation();    
      $.mobile.changePage("#third"); 
     } 
    } 
}); 

Просто играть с фиктивной переменной, переключите его с истинного на ложное, чтобы увидеть, как использовать это решение ,

+1

Просто любопытно, почему это лучшее и что альтернатива? – Jasper

+0

Это не работает, оно должно идти прямо в третье, но оно идет во Второе, я не вижу удар ... –

+0

Вы даже попытались проверить этот пример? Что произойдет, если для фиктивного объекта установлено значение true и что произойдет, если для фиктивного объекта установлено значение false. – Gajotres