Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQM删除我的页面_Javascript_Jquery_Html_Jquery Mobile - Fatal编程技术网

Javascript JQM删除我的页面

Javascript JQM删除我的页面,javascript,jquery,html,jquery-mobile,Javascript,Jquery,Html,Jquery Mobile,举一个很小的例子来说明我对jquerymobile的问题: JSFiddle - http://jsfiddle.net/forrest_gump/Q73Mk/3/ 如您所见,我调用了jqm changePage(),它出现了一秒钟,但是它突然被#pageIndex删除了 我花了很多时间试图找出原因!?!我是傻瓜还是jqm bug?请注意,pageinit在页面准备好显示但仍然隐藏时触发,因为该页面上仍有一系列事件未发生。更改页面并不能阻止这些事件的发生,导致在一段时间内显示目标页面并返回到上

举一个很小的例子来说明我对jquerymobile的问题:

JSFiddle - http://jsfiddle.net/forrest_gump/Q73Mk/3/
如您所见,我调用了jqm changePage(),它出现了一秒钟,但是它突然被#pageIndex删除了


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

请注意,
pageinit
在页面准备好显示但仍然隐藏时触发,因为该页面上仍有一系列事件未发生。更改页面并不能阻止这些事件的发生,导致在一段时间内显示目标页面并返回到上一页

您有两种解决方案:

  • 解决方案一:

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

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


  • 解决方案二:

    收听
    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();
        }
    });
    


这里到底应该发生什么?据我所知,在使用changePage之后,JQM应该将活动页面从#pageIndex更改为#pageLogin。如果我理解正确,则pageshow事件应该会有所帮助(因为页面已经显示),但它不会!我也不明白为什么在第二种解决方案中使用这样的if条件。在这种情况下,pageIndex将永远不会加载,对吗?@DmitrySakov它不会有帮助,因为在
pageshow
之后还有另一个事件,即
pagechange
。我也尝试了pagechange事件,但它也不起作用。@DmitrySakov因为页面事件已被弃用并替换为
pagecontainer
事件。这些新事件不能绑定到特定页面,因此您需要使用
if语句
开关
,以便在特定页面上执行特定代码。让我们