2013-07-22 62 views
0

的情况如下:jQuery Mobile的:changepage到另一个页面,而不显示页

鉴于3页:Pag_A,Pag_B和Pag_C。

用户启动“Pag_A”,Pag_A更改为“Pag_B”,Pag_B评估导致跳转至“Pag_C”的一些编码。

我试过所有的JQuery事件,他们都不满意我。最接近的方法是使用Pag_B的“pagebeforecreate”事件如下:

$(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

退房的API,让你牛逼这个呢?

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

+0

是的,我测试后,你张贴,beavour是一样的....比使用'pagebeforecreate' –

+0

所以你的逻辑是,如果这个显示C而不是B否显示B?在从A调用演出B之前,你不应该在A页上做这个吗? – verbanicm

+0

这是真正的朋友,重定向逻辑是在Page_B上,而不是在Page_A ....如果没有找到其他解决方案,我应该重新思考所有....谢谢....我会等到有人给我一个闪光... –

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

你甚至尝试过测试这个例子吗?如果将dummy设置为true,会发生什么,如果将dummy设置为false,会发生什么情况。 – Gajotres

相关问题