Jquery Mobile dialog的生命周期

JQuery Mobile對htm5的移動開發絕對是個好用的東西,今天簡單談談JQuery Mobile中的dialog的使用。

1.對話框的彈出。

2.對話框的生命周期。

3.對話框內事件的注冊。?

?

1)第一個問題:對話框的彈出。

??????? 如果要彈出一個對話框,可以在頁面中添加一個按鈕

<a?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>
????????<a?href="#"?data-role="button"?data-rel="back"?data-theme="b"?id="soundgood">Sounds
????????????good</a>?<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,將其隱藏。

<a?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.pswp.cn/news/539888.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539888.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539888.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基本linux命令vi,基本linux和vi命令.pdf

基本linux和vi命令DETIBIHORP ___________________YLTCIR 附錄 BTSSIR 基本的 Linux 和ETUP vi 命令 yM lO nC oS___________________I eH sT uM NOR OF IS TL AAI RR OET PA RMT OIK

集成Java內容倉庫和Spring

JCR模塊 Spring Modules的一部分&#xff0c;JCR模塊的主要目標是&#xff1a;以一種類似Spring主分發包中ORM包的方式&#xff0c;簡化使用JSR-170 API進行開發。特點如下&#xff1a; JcrTemplate&#xff0c;允許執行JcrCallback和異常處理&#xff08;將需檢查的JCR異常轉換…

jQuery Mobile彈出對話框后不刷新原頁面,保持原頁面內容不變

使用jQuery Mobile開發移動應用程序時&#xff0c;在一個頁面上彈出對話框&#xff0c;關閉對話框后&#xff0c;發現原來的頁面被刷新了。如果原頁面上有一些已經選擇或者填寫的數據&#xff0c;則這些數據就會丟失。這時候&#xff0c;就需要對對話框的返回按鈕做一些處理&am…

mpi4py linux例子,python-3.x – mpi4py中的共享內存

我使用MPI(mpi4py)腳本(在單個節點上),它與一個非常大的對象一起使用.為了讓所有進程都可以訪問該對象,我通過comm.bcast()分發它.這會將對象復制到所有進程并占用大量內存,尤其是在復制過程中.因此,我想分享像指針而不是對象本身.我發現memoryview中的一些功能對于增強進程內對…

c語言源程序最多可能由組成,一個C語言源程序由若干函數組成,其中至少應含有一個()。...

個C語言源由I am interested in the training course, which _____ at Hilton Hotel in Beijing from March 8 to 12, 2018.程序成“萬物莫不有對”體現了中國傳統哲學的矛盾觀。用戶在進行產品的三維設計時&#xff0c;干函可以采用以下( )的設計方法。數組少意識是人腦對客觀…

oracle的背景

oracle簡介 1977年 美國人 Larry 成立軟件開發實驗室 。 1980年 用c/c開發了世界第一個商用關系型數據庫&#xff08;RDBMS&#xff09;。 1983年 公司更名為Oracle Corporation&#xff08;甲骨文公司&#xff09;。 2009年4月21日&#xff0c;Oracle收購Sun公司。 30多…

Citrix Netscaler版本管理和選擇

Citrix Netscaler版本管理和選擇 來源 http://blog.51cto.com/caojin/1898164 隨著Citrix Netscaler的快速發展&#xff0c;有很多人在維護設備時經常搞不懂Netscaler軟件版本是如何查看和選擇&#xff0c;當前軟件是否需要升級&#xff0c;當前軟件是否穩定等。基于以上問題&a…

樹的基本操作代碼 c語言,二叉樹的基本操作(C語言、源代碼)

二叉樹的基本操作(源代碼)#include "stdio.h"#include "malloc.h"#define MAX 100typedef struct node{int date;struct node *lchild,*rchild;}bitnode,*bitree;bitree createbitree(bitree bt){int m;printf("m");scanf("%d",&m…

oracle實例與數據庫

一、名稱 Oracle數據庫服務器。單叫數據庫或服務器都不全面。 二、組成 oracle數據庫服務器由二部份組成&#xff1a;實例和數據庫 實例&#xff1a; 可理解為對象&#xff0c;看不見。數據庫&#xff1a; 理解為類&#xff0c;看得見的&#xff0c;E:\app\Administrator\…

1.Dao代碼如何編寫?

Dao代碼如何編寫&#xff1f; 1、操作xml數據。數據保存在xml文件里。2、使用jdbc技術。2.1、原始的jdbc操作&#xff0c;connection&#xff0c;statement&#xff0c;resultset。2.2、自定義一個持久層的框架&#xff0c;封裝通用的dao操作方法。2.3、DbUtils組件&#xff0c…

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;希望大家給點建議。(碼表 要利于編碼和解碼)(部分碼表)白游程 碼子 黑游程 碼子(長…

用2468這四個數字c語言,C語言作業及參考答案.doc

C語言及實驗作業參考做法分支程序設計上機作業&#xff1a;標題4.3三角形判斷描述輸入三條邊的長&#xff0c;輸出這三條邊是否構成等邊三角形、等腰三角形、直角三角形、普通三角形&#xff0c;還是不能構成三角形輸入數據整數a,b,c的值輸出數據等邊三角形、等腰三角形、直角三…

C# WinForm開發系列 - GDI+【轉】

http://blog.csdn.net/blue_sky6/article/details/53811435?locationNum6&fps1 C# WinForm開發系列 - GDI Posted on 2009-07-19 15:23 peterzb 閱讀(48850) 評論(17) 編輯 收藏 UI&#xff08;User Interface&#xff09;編程在整個項目開發過程中是個頗為重要的環節&…

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 …

3.hello hibernate

一、Hibernate的開發步驟 1、引入jar文件2、配置3、apihibernate的映射文件的配置是不容易的&#xff0c;是重點學習的地方。二、Hello Hibernate 1、數據庫表準備 數據庫名 &#xff1a;test表&#xff1a;DROP TABLE IF EXISTS users; CREATE TABLE users (id int(11) NOT N…

無法連接oralce問題(不斷更新)

1、oracle自帶的sqlplus能連接&#xff0c;但第三方工具如plsqldev不能連接 解決方法&#xff1a;1、確認listener.ora&#xff0c;tnsnames.ora配置文件中的host地址一致。且&#xff1a;listener.ora只能配置主機名。winr&#xff0c;cmd&#xff0c;hostname 獲取主機名。2、…

新版vue-cli搭建多頁面應用

2019獨角獸企業重金招聘Python工程師標準>>> 折騰了好久&#xff0c;終于把坑踩完了&#xff0c;廢話不多說&#xff0c;上教程~ github地址&#xff1a;https://github.com/guolihuaGitHub/vue-cli-multipage 另外推薦一下我另一篇博客&#xff0c;我覺得這篇好用&…

android開發方法數,Android減少App方法數

作為Android開發者我們都知道Android應用方法數65535這樣一個限制&#xff0c;這是因為在Android系統中&#xff0c;方法的id使用short類型存儲在Dex文件中&#xff0c;而short類型的取值范圍是-32,768到32,767&#xff0c;因此導致Android應用方法數65535這樣一個最大限制&…