Jquery Mobile dialog的生命周期

JQuery Mobile对htm5的移动开发绝对是个好用的东西,今天简单谈谈JQuery Mobile中的dialog的使用。

1.对话框的弹出。

2.对话框的生命周期。

3.对话框内事件的注册。 

 

1)第一个问题:对话框的弹出。

        如果要弹出一个对话框,可以在页面中添加一个按钮

<href="dialog.htm" data-role="button" data-inline="true" data-rel="dialog" data-transition="pop">Open dialog</a>

        再看看dialog.htm的内容,注意对话框是个单独的页面,jquery mobile将以Ajax方式加载到事件触发的页面,因此dialog.htm页面不需要Header,content,footer之类的文档结构,以下代码就是全部dialog.htm的内容

复制代码
<div data-role="dialog" id="aboutPage">
    <div data-role="header" data-theme="d">
        <h1>
            Dialog</h1>
    </div>
    <div data-role="content" data-theme="c">
        <h1>
            Delete page?</h1>
        <p>
            This is a regular page, styled as a dialog. To create a dialog, just link to a normal
            page and include a transition and <code>data-rel="dialog"</code> attribute.</p>
        <href="#" data-role="button" data-rel="back" data-theme="b" id="soundgood">Sounds
            good</a> <href="demo.htm" data-role="button" data-rel="back" data-theme="c">Cancel</a>
    </div>
</div>
复制代码

        这样当点击Open Dialog之后就会弹出这个对话框了。弹出对话框的形式有多种,大家可以参考http://jquerymobile.com/。

 

2)第二个问题:对话框事件的生命周期。

       当我们弹出一个对话框后,我们可能需要再它的不同的生命周期中去注册不同的回调函数或事件,因此理解各个事件的顺序是很有必要的。

复制代码
$(document).bind("pagebeforeload", function (event, data) {
            alert('1.pagebeforeload!');
        });
        $('#aboutPage').live('pagebeforecreate', function (event) {
            alert('2.This page was just inserted into the dom!pagebeforecreate!!!');
        })

        $('#aboutPage').live('pagecreate', function (event) {
            alert('3.pagecreate!');
            $("#soundgood").attr("demo.htm");
            $("#soundgood").click(function () {
                alert("soundgood");
            });
        });

        $('#aboutPage').live('pageinit', function (event) {
            alert('4.This page was just enhanced by jQuery Mobile!pageinit!!!');
        });
        $(document).bind("pageload", function (event, data) {
            alert('5.pageload!');
        });
        $('#aboutPage').live('pageshow', function (event) {
            alert('6.pageshow!');
        });
        $('#aboutPage').live('pageremove', function (event) {
            alert('7.pageremove!');
        });
        $('#aboutPage').live('pagehide', function (event) {
            alert('8.pagehide!');
        });
复制代码

        看到上面代码,相信大家一目了然了。对对话框事件的绑定用live或bind,解除绑定用die,或unbind。另外大家可以在事件pagecreate中看到对话框事件的注册。切记,只有在对话框创建后注册的事件才是有用的,也就是说如果你事先在Open dialog按钮所在的页面给dialog里面的元素注册的事件是没用的,因为dialog是后来以Ajax加载进去的。具体原理请参看官方文档。

 

3)第三个问题:对话框事件的注册。

        上面我已稍微提及。为了避免打乱Open Dialog 所在页面(就叫主页面吧)的文档结构。你可以有两种做法,第一种将Open Dialog的样式设为none,将其隐藏。

<href="dialog.htm" data-role="button" data-inline="true" data-rel="dialog" data-transition="pop">Open dialog</a>

        第二种做法是,添加一个javascript函数,来动态往Dom结构中添加这样一个链接,这样你可以随时调用这个函数来打开一个对话框,注意回调函数的写法

复制代码
//options has properties: href,transition
    //if you need callback method, you must add options.dialog parameter
    openDialog: function (options) {
        var href = options.href || "about:blank";
        var transition = options.transition || "none";
        $('body').append("<a id='tPushDialog' href='" + options.href + "' data-rel=\"dialog\" data-transition=\"" + options.transition + "\" style='display:none;'>Open dialog</a> ");
        $("#tPushDialog").trigger('click');
        $('body').find('#tPushDialog').remove();

        $("#" + options.dialog).live('pageshow', function (event) {
            if (typeof options.callback == 'function')
                options.callback();
        });

    }
复制代码

 

        另外一个要注意的问题是有的人注册的事件会响应多次,比如在第二个问题中给Sound Good注册的事件会响应多次,你或许感到很奇怪。其实是因为你每次文档加载的时候,你都给这个按钮注册了一个click事件,所以会弹出多次。正确的做法是,给dialog中的元素添加事件时,先unbind再bind。下面给大家一个例子。

复制代码
<script type="text/javascript">
        function show() {
            Utils.openDialog({
                href: "MessageDialog.htm",
                dialog: "MessageDialog",
                callback: function () {
                    $("#btnOk").unbind("click").bind("click", function () {
                        alert("test");
                        $("#MessageDialog").dialog("close");
                    });
                }
            });
        }
    </script>
复制代码

        再看看MessageDialog.htm的文档结构

复制代码
<div data-role="dialog" id="MessageDialog" style="z-index: 999">
    <div data-role="header" data-theme="b">
        <div class="dialog_title1">
            Message Received</div>
        <input type="hidden" id="hiddenMessageId" />
    </div>
    <div data-role="content" data-theme="b">
        <div style="margin: 10px 5px 10px 5px;">
            <span id="spanMessage" style="font-weight: bold"></span>
        </div>
        <div id="messageContent">
            <ul style="margin-left: 5px;">
                <li>
                    <input type="button" data-inline="true" id="btnOk" value="Yes" data-rel="back" />
                    <input type="button" data-inline="true" id="Button1" value="No" data-rel="back" />
                </li>
            </ul>
        </div>
    </div>
</div>
复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言源程序最多可能由组成,一个C语言源程序由若干函数组成,其中至少应含有一个()。...

个C语言源由I am interested in the training course, which _____ at Hilton Hotel in Beijing from March 8 to 12, 2018.程序成“万物莫不有对”体现了中国传统哲学的矛盾观。用户在进行产品的三维设计时&#xff0c;干函可以采用以下( )的设计方法。数组少意识是人脑对客观…

Citrix Netscaler版本管理和选择

Citrix Netscaler版本管理和选择 来源 http://blog.51cto.com/caojin/1898164 随着Citrix Netscaler的快速发展&#xff0c;有很多人在维护设备时经常搞不懂Netscaler软件版本是如何查看和选择&#xff0c;当前软件是否需要升级&#xff0c;当前软件是否稳定等。基于以上问题&a…

oracle实例与数据库

一、名称 Oracle数据库服务器。单叫数据库或服务器都不全面。 二、组成 oracle数据库服务器由二部份组成&#xff1a;实例和数据库 实例&#xff1a; 可理解为对象&#xff0c;看不见。数据库&#xff1a; 理解为类&#xff0c;看得见的&#xff0c;E:\app\Administrator\…

WEB前端面试题汇总整理01

1.JS找字符串中出现最多的字符 例如&#xff1a;求字符串nininihaoa中出现次数最多字符 var str "nininihaoa"; var o {}; for (var i 0, length str.length; i < length; i) {var char str.charAt(i);if (o[char]) {o[char]; //次数加1} else {o[char] 1;…

c语言 文件游程统计,游程 码表 如何形成

游程 码表 如何形成求一个程序 将下表用huffman 树存储表示用传统的霍夫曼建立的树 好像不能形成此码表。我感觉应该有一个特等的算法。我也试了好几种方法&#xff0c;感觉都不行&#xff0c;希望大家给点建议。(码表 要利于编码和解码)(部分码表)白游程 码子 黑游程 码子(长…

2.ORM思想

一、ORM思想介绍 orm是一种思想&#xff0c;是dao层代码的一种编写思想。其中&#xff1a;o代表Object&#xff0c;java对象&#xff1b;r代表Relation&#xff0c;关系型数据库&#xff1b;m代表Map&#xff0c;java对象和关系型数据库表的映射关系。该思想主张&#xff1a;1、…

android 字体颜色选择,Android中颜色选择器和改变字体颜色的实例教程

易采站长站为您分析Android中颜色选择器和改变字体颜色的实例教程,其中改变字体颜色用到了ColorPicker颜色选择器,需要的朋友可以参考下1.构建一张七彩图:我们经常看到这种样子的颜色选择器吧..然后其实右边的亮度选择是:这样我们的代码就可以进行啦...// 创建七彩图片private …

新版vue-cli搭建多页面应用

2019独角兽企业重金招聘Python工程师标准>>> 折腾了好久&#xff0c;终于把坑踩完了&#xff0c;废话不多说&#xff0c;上教程~ github地址&#xff1a;https://github.com/guolihuaGitHub/vue-cli-multipage 另外推荐一下我另一篇博客&#xff0c;我觉得这篇好用&…

2017 Google 开发者大会直播入口

今年&#xff0c;Google 开发者大会再度来袭&#xff01;大会将于 12 月 13 日和 14 日在上海举办&#xff0c;主题涵盖机器学习 (Machine Learning)、Android、移动网络&#xff08;Mobile Web)、TensorFlow、Firebase、云服务 (Cloud)、AR/VR、设计 (Design) 以及更多开发者相…

日志组件slf4j介绍及配置详解

2019独角兽企业重金招聘Python工程师标准>>> 原文出自 1 基本介绍 每一个Java程序员都知道日志对于任何一个Java应用程序尤其是服务端程序是至关重要的&#xff0c;而很多程序员也已经熟悉各种不同的日志库&#xff0c;如java.util.logging、Apache log4j、logback。…

count(*),count(1),count(0)效率

网上文章很多&#xff0c;今天分别跑了一张2000多万行的表&#xff0c;该表没有主键&#xff0c;索引&#xff0c;约束条件。 结果是&#xff0c;效率差不多

android 转场动画兼容问题,【Android】关于ARouter转场动画的问题

实现从主页跳转到搜索页&#xff0c;再从搜索页回退主页withTransition(int resId,int resId)这个方法两个参数第一个的意思是&#xff0c; A 到 B&#xff0c; B 的入场动画第二个的意思是&#xff0c;A 到 B&#xff0c; A 的出场动画即&#xff0c;入场动画&#xff0c;出场…

react不同环境不同配置angular_叫雨山斗鸡优势在哪里,环境不同,价值不同

叫雨山斗鸡优势在哪里&#xff0c;环境不同&#xff0c;价值不同 原生态高端食材网站&#xff0c;专注金线莲、散放斗鸡、斗鸡蛋、野生蜂蜜、小耳黑猪肉等云南原生态套餐定制的高端食材供应商。云南叫雨山斗鸡叫雨山斗鸡原生态饲养 叫雨山斗鸡源自于鲁西斗鸡&#xff0c;初代斗…

android studio 布局拖拽,为什么使用android studio不能像老师一样在Design里随意拖动控件...

qq_喷泉_02017-07-25 13:08已采纳xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height"match_parent"tools:context"co…

Oracle自定义函数(不断更新)

1、将数字转为ip地址&#xff1a;IPAdd_DotNumFormat create or replace FUNCTION IPAdd_DotNumFormat(v_LfValue number)return varchar2 asv_DotNumString varchar2(50);v_flg Integer;v_NewLfValue number;v_tmp Integer;v_P1 Integer;v_P2 Integer;v_P3 Integer;v_P4…

element ui select设置不显示不存在的项_appium—等待时间设置方法

引言&#xff1a;在做UI自动化的过程中&#xff0c;我们有时候为了等待元素的出现&#xff0c;需要加一些等待时间来帮助&#xff0c;但是有时候时间加的过多或者过少&#xff0c;这个没有办法判断&#xff0c;今天就介绍几种等待时间&#xff0c;我们看看那种适合我们 一、强制…

android rn 和webview,RN Webview与Web的通信与调试

React Native Version:0.51RN 在 0.37 版本中加入了WebView功能&#xff0c;所以想要在使用WebView,版本必须>0.37&#xff0c;发送的 message 只能是字符串&#xff0c;所以需要将其他格式的数据转换成字符串&#xff0c;在接收到后再转换回去&#xff0c;其实直接用JSON.s…

html 物流状态,使用css实现物流进度的样式的实例代码

效果&#xff1a;css样式&#xff1a;ul li {list-style: none;}.package-status {padding: 18px 0 0 0}.package-status .status-list {margin: 0;padding: 0;margin-top: -5px;padding-left: 8px;list-style: none;}.package-status .status-list>li {border-left: 2px so…

点钞机语音怎么打开_原来微信语音一样能转发? 居然还有人不知道

微信怎么把语音转发给别人&#xff1f;原来这个简单啊&#xff0c;微信作为一款我们最常用的社交工具&#xff0c;无论是生活还是工作过程中&#xff0c;我们都能够用到微信。那么大家知道微信怎么把语音转发给别人吗&#xff1f;有的人肯定就会回答说&#xff1a;"跟转发…