0

情况如下:

给定 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'

他们都以相同的方式表现......即,Page_B 被可怕地显示......

4

2 回答 2

1

看看api,你试过吗?

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

于 2013-07-22T18:15:52.710 回答
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 以查看如何使用此解决方案。

于 2013-07-22T18:34:23.720 回答