JQM删除了我的页面

时间:2014-03-03 08:01:34

标签: javascript jquery html jquery-mobile

有一个非常小的例子用jquerymobile来证明我的问题:

JSFiddle - http://jsfiddle.net/forrest_gump/Q73Mk/3/

正如你所看到的那样,我调用了jqm changePage()并且它会出现一秒钟,但它会被#pageIndex

突然删除

我花了很多时间试图找出原因!?!我是傻瓜还是jqm bug?

1 个答案:

答案 0 :(得分:1)

请注意,pageinit会在页面准备好显示但仍然隐藏时触发,因为该页面上仍然没有发生事件的序列。更改页面不会阻止这些事件发生,从而导致显示目标页面一段时间并恢复到上一页。

您有两个解决方案:

  • 解决方案一:

    使用changePage延迟setTimeout()以确保触发所有页面事件

    $(document).on('pagecreate', '#pageIndex', function () {
        setTimeout(function () {
            $.mobile.pageContainer.pagecontainer("change", "#pageLogin", {
                transition: "slideup"
            });
        }, 100); /* 100ms or more */
    });
    

    注意: pageinit已弃用,已替换为pagecreate。此外,$.mobile.changePage已替换为$.mobile.pageContainer.pagecontainer("change", "#page", { options });

      

    <强> Demo


  • 解决方案二:

    收听pagebeforechange事件以决定首先显示哪个页面。

    $(document).on("pagebeforechange", function (e, ui) {
        if (ui.toPage[0].id == "pageIndex" && typeof ui.options.fromPage === "undefined") {
            $.mobile.pageContainer.pagecontainer("change", "#pageLogin", {
                transition: "slideup"
            });
            e.preventDefault();
        }
    });
    
      

    <强> Demo