jQueryMobile权威指南
上QQ阅读APP看书,第一时间看更新

2.4 对话框

jQuery Mobile中创建对话框的方式十分方便,只需要在指向页面的链接元素中添加一个“data-rel”属性,并将该属性值设置为“dialog”。单击该链接时,打开的页面将以一个对话框的形式展示在浏览器中。单击对话框中的任意链接时,打开的对话框将自动关闭,并以“回退”的形式切换至上一页。此外,还可以在对话框中创建一个“取消”按钮,通过设置元素属性或编写JavaScript代码的方式关闭当前打开的对话框。

2.4.1 创建简单对话框

将链接元素的“data-rel”属性值设置为“true”,打开的对话框实际上是一个标准的“page”容器。因此,在打开时,也可以通过设置“data-transition”属性值,选择打开对话框时切换页面的动画效果。下面通过一个简单的实例来说明如何创建一个简单对话框。

实例2-10 jQuery Mobile中创建对话框

1.功能说明

新建一个HTML页面,在页面中添加一个<a>元素,并将该元素的“data-rel”属性值设置为“dialog”,表示以对话框的形式打开链接元素指定的目标URL地址。

2.实现代码

新建一个HTML页面2-10.htm,加入代码如代码清单2-10所示。

代码清单2-10 jQuery Mobile中创建对话框

<!DOCTYPE html>
<html>
<head>
    <title>jQuery Mobile 打开对话框</title>
    <meta name="viewport" content="width=device-width,
          initial-scale=1"/>
    <link href="Css/jquery.mobile-1.0.1.min.css"
          rel="Stylesheet" type="text/css"/>
    <script src="Js/jquery-1.6.4.js"
          type="text/javascript"></script>
    <script src="Js/jquery.mobile-1.0.1.js"
          type="text/javascript"></script>
</head>
<body>
  <div data-role="page" id="e1">
    <div data-role="header"><h1>对话框</h1></div>
    <div data-role="content">
      <p>
        <a href="dialog.htm"
           data-rel="dialog"
           data-transition="pop">打开对话框
        </a>
      </p>
    </div>
    <div data-role="footer"><h4>?2012 rttop.cn studio</h4></div>
  </div>
</body>
</html>

另外,创建一个对话框页面dialog.htm,加入代码如下所示:

<!DOCTYPE html>
<html>
<head>
    <title>简单的对话框</title>
    <meta name="viewport" content="width=device-width,
          initial-scale=1"/>
</head>
<body>
  <div data-role="page">
    <div data-role="header"><h1>主题</h1></div>
    <div data-role="content">
         <p>这是一个简单的对话框!</p>
    </div>
    <div data-role="footer"><h4>?2012 rttop.cn studio</h4></div>
  </div>
</body>
</html>

3.页面效果

该页面在Opera Mobile Emulator 12.0下执行的效果如图2-10所示。

图2-10 在浏览器中打开标准对话框的效果

4.源码分析

本实例设置链接的“data-rel”属性值为“dialog”,通过该链接打开的页面将以对话框的形式展示在当前页面中。该对话框以模式的方式浮在当前页的上面,背景添加深色,四周是圆角的效果,左上角自带一个“×”关闭按钮,单击该按钮,对话框将关闭。

2.4.2 关闭对话框

在打开的对话框中,可以使用自带的“×”关闭按钮关闭打开的对话框,此外,在对话框内添加其他链接按钮,将该链接的“data-rel”属性值设置为“back”,单击该链接也可以实现关闭对话框的功能。下面通过一个简单的实例来说明如何创建一个可关闭的对话框。

实例2-11 jQuery Mobile中关闭对话框

1.功能说明

新建一个HTML页面,并添加一个<a>元素的链接,单击该链接时,将以对话框的形式弹出一个指定的页面,单击对话框中的“关闭”按钮,可以直接关闭打开的对话框。

2.实现代码

新建一个HTML页面2-11.htm,加入代码如代码清单2-11所示。

代码清单2-11 jQuery Mobile中关闭对话框

<!DOCTYPE html>
<html>
<head>
    <title>jQuery Mobile 关闭对话框</title>
    <meta name="viewport" content="width=device-width,
          initial-scale=1"/>
    <link href="Css/jquery.mobile-1.0.1.min.css"
          rel="Stylesheet" type="text/css"/>
    <script src="Js/jquery-1.6.4.js"
          type="text/javascript"></script>
    <script src="Js/jquery.mobile-1.0.1.js"
          type="text/javascript"></script>
</head>
<body>
  <div data-role="page" id="e1">
    <div data-role="header"><h1>对话框</h1></div>
    <div data-role="content">
      <p>
        <a href="close.htm"
           data-rel="dialog"
           data-transition="pop">关闭
        </a>
      </p>
    </div>
    <div data-role="footer"><h4>?2012 rttop.cn studio</h4></div>
  </div>
</body>
</html>

另外,创建一个HTML页面close.htm,用于系统提示。加入代码如下所示:

<!DOCTYPE html>
<html>
<head>
    <title>系统提示</title>
    <meta name="viewport" content="width=device-width,
          initial-scale=1"/>
</head>
<body>
  <div data-role="page">
    <div data-role="header"><h1>提示</h1></div>
    <div data-role="content">
      <p>真的要关闭弹出的对话框吗?</p>
      <p>
        <a href="#"
           data-role="button"
           data-rel="back"
           data-theme="a">关闭
        </a>
      </p>
    </div>
    <div data-role="footer"><h4>?2012 rttop.cn studio</h4></div>
  </div>
</body>
</html>

3.页面效果

该页面在Opera Mobile Emulator 12.0下执行的效果如图2-11所示。

图2-11 在浏览器中打开自带“关闭”按钮对话框

4.源码分析

本实例在对话框中将链接元素的“data-rel”属性设置为“back”,单击该链接将关闭当前打开的对话框。这种方法在不支持JavaScript代码的浏览器中,同样可以实现对应的功能;另外,编写JavaScript代码也可以实现关闭对话框的功能。代码如下所示:

$('.ui-dialog').dialog('close');