jQuery Mobile:在不显示Page的情况下将页面更改为其他页面

时间:2013-07-22 18:13:22

标签: jquery jquery-mobile

情况如下:

给出3页:Pag_A,Pag_B和Pag_C。

用户从“Pag_A”开始,Pag_A变为“Pag_B”,Pag_B评估一些导致跳转到“Pag_C”的编码。

我已经尝试过所有JQuery Events,但没有一个让我满意。最接近的方法是使用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'

所有这些都以同样的方式存在......即,Page_B可怕的显示......

2 个答案:

答案 0 :(得分:1)

查看api,你试过吗?

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

答案 1 :(得分: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");
        }
    }
});

只需使用虚拟变量,将其从true切换为false即可查看如何使用此解决方案。