jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery-mobile – JQuery Mobile – 后退和前进浏览器按钮触发pageinit事件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的网站中,我看到在浏览器的前进按钮选择期间调用了pageinit.它是否正确.这不会两次绑定已注册的事件.

First.html

<!DOCTYPE HTML>
<html>
    
    <head>
        <title>Test1</title>
        <Meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <Meta name="viewport" content="width=device-width,initial-scale=1.0" />
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
        <script src="../scripts/common.js"></script>
    </head>
    
    <body>
        <div data-role="page" id="first">
             <h1 style="BACkground: red">Swipe 1</h1>
         <a href="second.html">Click</a>
        </div>
    </body>

</html>

Second.html

<!DOCTYPE html>
<html>

    <head>
        <title>Test2</title>
        <Meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <Meta name="viewport" content="width=device-width,initial-scale=1.0" />
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
        <script src="../scripts/common.js"></script>
    </head>

    <body>
        <div data-role="page" id="second">
            <div data-role="header">
                <h1>jQuery Mobile</h1>
            </div>
            <div data-role="content">   
              <a href="third.html">Click</a>
            </div>
            <div data-role="footer">
                <h4>www.jboss.org/developer</h4>
            </div>
        </div>
    </body>

</html>

third.html

<!DOCTYPE html>
<html>

    <head>
        <title>jQuery Mobile Template</title>
        <Meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <Meta name="viewport" content="width=device-width,initial-scale=1" />
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
        <script type="text/javascript" src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
    </head>

    <body>
        <div data-role="page" id="third">
            <div data-role="header">
                    <h1>jQuery Mobile</h1> 
            </div>
            <div data-role="content">
                <ul id="listOfItems" data-role="listview" data-inset="true" data-filter="true">
                    <li><a href="">One</a>
                    </li>
                    <li><a href="">Two</a>
                    </li>
                    <li><a href="">Three</a>
                    </li>
                </ul>
            </div>
            <div data-role="footer">
                <h4>www.jboss.org/developer</h4> 
            </div>
        </div>
    </body>

</html>

common.js

$(document).on('pageinit',"#first",function (event) {
    console.log("first");
});


$(document).on('pageinit',"#second",function (event) {
    console.log("second");
});


$(document).on('pageinit',"#third",function (event) {
    console.log("third");
});

你能查看上面的代码,让我知道为什么每次调用pageinit.

解决方法

介绍

在我们讨论页面事件之前,我们需要讨论jQuery Mobile页面架构. jQuery Mobile应用程序可以通过两种不同的方式创建,即多页面模板或多个HTML页面.

不同的jQuery Mobile页面架构

多页模板

在这种模板中,所有内容都被加载到DOM中.无论用户一个页面转换到另一个页面多少次都将保持加载到DOM中.然这是在页面之间平滑过渡的最佳解决方案,但它可能会给DOM带来负担.这通常不是桌面浏览器的问题,但移动浏览器可能会受到影响,特别是在低端设备上.

多HTML模板

此模板解决方案需要多个HTML页面.它是大型移动应用程序构建的绝佳选择,但有一个问题.与每页访问页面的多页面模板不同,它将加载到DOM中.在较慢的设备上,它可能会导致转换问题,尤其是在目标页面很大的情况下.这可以通过页面预取来解决,其中jQuery Mobile在主页面加载并触发了pagecreate事件后在后台加载目标页面.但是还有另一个大问题,这在jQuery Mobile文档中没有充分描述.在页面转换期间,将从DOM中删除上一页.这样做是为了防止DOM内部的内容累积.使用另一个名为的属性也可以防止这种情况:

data-dom-cache="true"

或者通过初始化全局参数:

$.mobile.page.prototype.options.domCache = true;

页面架构如何影响页面事件

jQuery Mobile有几个页面事件(更多关于它可以找到HEREHERE).它们在这里涵盖整页加载/转换过程.高级jQuery Mobile用户知道使用pageinit事件而不是jQuery经典文档就绪事件.就像文档就绪一样,pageinit在页面初始化期间只触发一次.

但是有一个问题,pageinit只会在DOM内部的页面初始化期间触发一次.如果页面从DOM中删除(在多HTML模板中)并再次加载,则会再次触发pageinit.

简而言之,每个页面的DOM初始化都会触发新的页面事件初始化.如前所述,这可以通过页面兑现来防止.

页面兑现的影响

这几乎是jQuery Mobile开发人员的禁忌主题,所以让我讲一些事情,没有必要害怕页面兑现.相信我,jQuery Mobile是一个强大的框架,它通常在每个可用平台上都能很好地运行.与jQuery Mobile相关的大量抱怨与其大的DOM大小要求没有直接关系,因此不必担心兑现.

这并不意味着你应该像喝醉酒的水手那样填补DOm.每个应用程序开发都必须提前计划.大多数使用的页面必须永久保留在DOM中.其他所有内容都应该特别使用(需要时加载/删除).

大佬总结

以上是大佬教程为你收集整理的jquery-mobile – JQuery Mobile – 后退和前进浏览器按钮触发pageinit事件全部内容,希望文章能够帮你解决jquery-mobile – JQuery Mobile – 后退和前进浏览器按钮触发pageinit事件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。