取消页面显示事件并在jQuery Mobile中返回或重定向

时间:2013-02-17 06:35:23

标签: cordova jquery-mobile

我在使用Phonegap& amp;开发移动应用程序时遇到了问题。 jQuery Mobile。

我在每次显示页面之前都要检查一个条目,比如page A。如果条件为假,我会将应用导航到另一个页面,例如page X。我使用页面事件pagebeforeshow做到了这一点。

但我的问题是......

即使我使用了pagebeforeshow事件,也会显示页面page A。即; page A显示一次,然后应用导航到page X。如果条件错误,我不希望显示page A。我的意思是,取消该页面显示事件并转到其他页面。

希望你能得到我的要求。

为什么会这样?还有其他方法可以让我完美地完成任务。

任何形式的帮助都将深表感谢! :)

1 个答案:

答案 0 :(得分:1)

在这种情况下,请勿使用 pagebeforeshow 事件,这是要触发的最后一页事件之一。此时,第二页已经创建并准备好显示。这必须在即将创建第二页之前完成。

首先看一下我的其他 ARTICLE ,在第一页到第二页的转换过程中,您会找到一个页面事件列表。或者可以找到 HERE

现在关于您的问题,这是一个可以用来解决问题的代码。它正在使用 pagebeforechange 事件(这是在页面转换期间触发的第一个事件):

$(document).on('pagebeforechange', function(e, data){  
    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') {
            alert('Can not transition from #index to #second!');
            e.preventDefault();
            e.stopPropagation();

            // remove active status on a button, if transition was triggered with a button
            $.mobile.activePage.find('.ui-btn-active').removeClass('ui-btn-active ui-focus ui-btn');;
        }  
    }
});

这是一个实时的 jsFiddle 示例:http://jsfiddle.net/Gajotres/3PhKZ/,您应该点击下一个按钮来触发页面更改。