jQuery移动DOM页面重用

jQuery Mobile DOM Page Reuse

本文关键字:移动 DOM jQuery      更新时间:2023-09-26

我发现jQuery mobile没有重用加载的页面。

$(document).on("pagecontainershow", function () {
    var activePage = $.mobile.pageContainer.pagecontainer("getActivePage");
    if (activePage.hasClass("search-page")) {
        var controller = activePage.data("controller");
        if (!controller) {
            controller = new SearchController(activePage);
            activePage.data("controller", controller);
        }
        controller.loadPage();
    }
});

之后…

$.mobile.pageContainer.pagecontainer("change", "search.html");

是一个包含

的HTML文档
<div data-role="page" class="search-page">

然而,在每次导航到search.html时,activatpage .data("controller")是空的,所以我重新初始化我的SearchController。

我认为jQuery移动重用页面已经加载到DOM?

jQuery Mobile使用两种不同的页面模板解决方案。

  • 多页面 -每个页面都是单个HTML文件的一部分
  • 多HTML -其中单个页面是单个HTML文件的一部分

你当然可以混合使用这些模板。

当jQuery Mobile第一次初始化时,初始的HTML文件被完全加载到DOM中。该内容将留在DOM中,直到页面刷新(或者强制删除它,这是一个错误的决定)。

每一个其他的HTML页面将被加载,当你过渡到它,它将被删除,只要你从它过渡。基本上,只要它是活动的,它就会在DOM中保持活跃。

所以,简而言之,只有在初始HTML文件中找到的页面将永久留在DOM中,其他所有内容将在激活它时加载/删除。