• jquery mobile


    基础概念

    元素数据之间的共享,使用jquery 的data方法。

    通过data-role属性指定元素的role,常用的有:page、header、content、footer,button、listview

    组件、控件相关的概念基本都有对应的role可以直接使用

    一屏幕只能显示一个page,html内如果有多个page,则其他page会被隐藏,隐藏方式如下:

    页面的跳转方式

    内部跳转(内连接):一个html内有多个page,page上都要指定id,这些page之间的跳转通过点击 a href=pageId 来跳转

    外连接:href指定其他页面地址,这种方式是通过ajax来加载页面,然后这个页面中的第一个page内的元素插入到当前页面中,虽然载入的仅仅是第一个page的内容,但ajax下载的时候可是把html的全部内容都下载了。那就意味着这个page以外的元素会被无视,而且被装入的page内的环境和当前页面的环境是一致的。当页面被关闭(如返回),对应page的html会从当前页面中移除,想要取消以上的效果,只需要加上rel=external即可,或者使用data-ajax="false"也可以,但两者的侧重点不同,前者应针对不同域名下的页面,而后者是同域

    跳转到其他page,除了通过a标签,还可以通过脚本:

    $(function() {
        $.mobile.changePage("about.htm",
        { transition: "slideup" });
    })

    以上代码,在页面加载完后就跳转到about.htm页面,同时可以指定过渡动画

    预加载

    只针对外链接,内连接根本就没必要预加载和缓存。

    在标签上使用<a href="about.htm" data-prefetch="true"></a>,则当前页面会自动进行ajax请求,加载页面,然后把里面第一个page装入到当前页面中。

    执行预加载会影响当前页面的访问速度,或者手动进行loadPage也是可以达到预加载的目的:

    $(function() {
        $.mobile.loadPage("about.htm");
    })

    缓存

    data-prefetch、loadPage和data-dom-cache的区别

    data-prefetch:只要page被显示出来,内部指定了data-prefetch的a标签就会执行预加载,然后把对应html内的page载入(后退回来也会重新执行data-prefetch)

    loadPage:该函数执行一次,就下载和载入一次。 可以理解为只执行一次预加载

    以上两者载入的page,在返回之后都会被销毁,而cache载入则不会销毁

    data-dom-cache:在被载入的page元素上添加data-dom-cache="true",点击执行第一次ajax请求后,该页面的page被载入到当前页面内,之后不会再移除这个page,相当于变相成为了内连接

    cache和loadPage(或者data-prefetch效果一致)配合:自动加载,而且返回后不会被销毁。针对这一点可以推出prefetch的特性。如果当前页面存在这个page的话,则不进行下载,不过对于单独使用prefetch的情况下(不使用cache),当被载入的page返回后,这个page就被销毁了,导致当前page需要再次对这个page进行预加载

    控件

    对于role=button的a标签,也会拥有button的样式

    后退功能: data-rel=back,会忽略a标签的href值,给个#即可

    data-icon指定图标、data-position指定定位

    有内定的样式class,如使按钮定位在右边 :ui-btn-right

    后退

    在page上设置data-add-back-btn="true",仅当该page是从其他page中打开跳转过来的,该page的头上才会显示后退按钮。

    点击这个也可以实现后退效果

    <a data-rel="back">后退</a>

    如果被打开的page是以对话框形式打开,则back也可以关闭对话框

    指定后退按钮的文字:

    <div id="e3" data-role="page" data-add-back-btn="true" data-back-btn-text="哈哈">

    网格布局

    提供了一套列布局方案。原理是外部的grid通过overflow成为BFC容器,而内部的列block,都是向左边浮动

    ui-block-a 有一个 clear:left样式。所以a列必定是行的第一列,假如一个grid中出现两个a,则第二个a因为有清除浮动,所以就移动到了下一行去了。就实现了a创建行的效果

    主题

    data-theme,有a~e5种,给page指定的话,则应用到整个page,给button指定的话,则仅仅引用到button上

    在框架初始化,框架获取theme值,然后拼接对应的class,添加到元素上。所以如果要动态切换主题的话,可不是单单data-theme值这么简答了

    事件

    http://w3school.com.cn/jquerymobile/jquerymobile_ref_events.asp

    $(document).on("pageinit","#pageone",function(){
    
    });

    pageone是一个page的id

    mobileinit

      一般都是绑定在document上,需要在jqm导入前进行绑定,否则该绑定无效【导入、执行jqm过程中就会触发这个事件,所以在jqm导入后才绑定的话,这个事件早就触发过了,所以无效】,这个方法调用的时候,还没进行jqm控件增强,所以可以在这个函数中对jqm进行参数配置等(如配置命名空间、配置主题等)

    pagebeforecreate

      绑定在page元素上,当page创建完成,但里面的组件还没有初始化时,会执行这个回调方法

    pagebeforehide

      绑定在page元素上,当page被隐藏或者销毁时,在动画开始前会调用这个方法

    pagebeforeload

      绑定在document上,当有page被加载进当前文档时(点击a标签、预加载等),会触发这个方法

    pagebeforeshow

      绑定在page上,当page要被显示出来时(第一个page显示的时候也会触发这个事件),在动画开始前就会执行这个方法

    pagechange

      绑定在document上,触发时机和pagebeforshow一致,只不过是在动画之后,也就是page完成切换后才执行

    pagechangefailed

      绑定在document上,当page切换失败后会执行,比如点击了a标签,href指向不存在的路径时会执行

    pagecreate

      绑定在page上,仅当page被载入到dom后才执行。执行次序在pagebeforeshow之前

    pagehide

      对应pagebeforehide,区别是在动画完成后才执行

  • 相关阅读:
    几种常见的content-type
    node简单起服务
    ESlint配置案例及如何配置
    网络攻防学习心得一(20159320)工具学习
    网络攻防学习心得一(20159320)黑客信息
    题解 POJ1187 【陨石的秘密】
    题解 POJ1934 【Trip】
    题解 POJ1952 【BUY LOW, BUY LOWER】
    TIM bug 总结以及应对方案
    题解 POJ3171 【Cleaning Shifts】
  • 原文地址:https://www.cnblogs.com/hellohello/p/7966586.html
Copyright © 2020-2023  润新知