习惯上,我们播放一条简短的信息,或向浏览者询问一个问题,都会用到dialog。

  • 创建一个基本的dialog
  • 使用dialog 选项
  • 形式
  • 启用内置动画
  • 给dialog添加按钮
  • 使用dialog回调函数
  • 编码的形式控制dialog

1 创建一个基本的dialog

$(function(){ $("#myDialog").dialog(); }); </script>

使用 jquery.ui.position.js后,dialog会自动居中。

使用 jquery.ui.draggable.js后,可以拖拽。

使用 jquery.ui.resizable.js后,可以重设大小。

1 dialog的选项

Option Default value Used to…
autoOpen true 当设为true时,dialog()方法一被调用就显示
buttons {} 支持一个包含button的对象。每个key会成为<button>的text,每个value会成为button点击时执行的回调函数
closeOnEscape true 如果设为true,按下ESC键能关闭dialog
closeText close 设置关闭按钮的text
dialogClass “” 出于主题的目的,为dialog设置额外的classnames
disable false 禁用控件
draggable true 在使用 jquery.ui.draggable.js 的情况下,使得dialog可以拖拽
height auto 设置dialog的初始高度
hide null 设置dialog被关闭时的效果
maxHeight false 设置最大高度
maxWidth false 设置最大宽度
minHeight 150 设置最小高度
minwidth 150 设置最小宽度
modal false 当dialog打开期间启用遮罩层
position center 在使用 jquery.ui.position.js 时,设置dialog在 viewport中的起始位置。可以接受一个字符串,一个字符串数组,一个包含相对于viewport的top 和left的精准坐标的数组,
resizable true 在使用 jquery.ui.resizable.js时,可调整大小
show null 设置dialog打开时的效果
stack true 当多个dialog打开时,时focused的dialog处于最前端
title “” 制定一个 title属性,可选地
width 300 设置dialog的其实宽度
zIndex 1000 设置空间起始的CSS z-index。当使用多个dialog,并且 stack选项设为true,每个dialog移动到stack前面时,z-index会改变

1.1 显示dialog

};

当autoOpen设为false时,页面加载后,dialog不会自动打开。

1.2 dialog的title

默认地,dialog的 title text 不能被选择,在操作系统的默认 tool tip style中,不会显示。给下层的元素使用 title 属性,text会出现在<span>元素中,这个<span>外层的<div>有 ui-dialog-titlebar 的classnames。这些属性会出现在控件的header中。

如果我们想给dialog 的DOM结构注入额外的元素,来展现额外的样式或不同的行为,我们可以使用title选项。

};

建议系统会播放OS tooltip,如果 title属性以这种方式被指定给一个控件的新元素。

1.3 遮罩层

dialog最伟大的资产之一是遮罩层。这个特性创建一个覆盖层,覆盖住下面的页面。当dialog打开时,任何页面上的东西都不能被交互。当dialog关闭时,覆盖层被移除。
这个特性最有益的是,需要关闭dialog才能使得页面再次可以被交互。并且为访问者提供了一个清晰的可视化指示器,在他们继续之前,dialog必须被交互。

var dialogOpts={
modal:true
};

完全由CSS framework创建的覆盖层,所以可以通过 ThemmeRoller 进行配置主题。我们也能使用自己的图片。ui-widget-overlay被加载覆盖层上,这个选择器是自定义时必须的。

1.4 添加按钮组

button 选项接受一个对象,用来指定不同的 button 元素如何呈现。每个 property:value pair代表一个单独的按钮。

var dialogOpts={
modal:true,
buttons:{
"OK":function(){},
"Cancel":function(){}
}
};

buttons对象中的 key 是 button的文本, value是按钮点击后,所执行的回调函数的名字。

1.5 启用dialog动画

var dialogOpts = {
show: true,
hide: true
};

启用内置的效果,会优雅地减小dialog的尺寸,并 透明知道它优雅地小时。

1.6 配置dialog的规模大小

var dialogOpts = {
width: 500,
height: 300,
minWidth: 150,
minHeight: 150,
maxWidth: 600,
maxHeight: 450
}

1.7 堆积

堆积属性被默认设为true,后最后调用dialog()方法的 对话框,会用友较高的 z-index,自动地处于前方。

2 dialog的事件模型

Event Fired when…
beforeclose dialog将要被关闭
close dialog被关闭
create dialog 被初始化
drag dialog被拖拽
dragStart dialog开始被拖拽
dragStop 停止被拖拽
focus 得到焦点
open 被打开
resize  
resizeStart  
resizeStop  
<div id="status" class="ui-widget ui-dialog ui-corner-all
<div class="ui-widget-header ui-dialog-titlebar
ui-corner-all">Dialog Status
$(function(){
var dialogOpts = {
open:function(){
$("#status").children(":last").text("The dialog is open");
},
close:function(){
$("#status").children(":last").text("The dialog is closed");
},
beforeclose:function(){
if(parseInt($(".ui-dialog").css("width"),10)>300){
returnfalse;
}
}
};
$("#myDialog").dialog(dialogOpts);
});
</script>

此处parseInt($(".ui-dialog").css("width"),10) 并不能获得 最终的 width。

dialog控件只传递一个单一的对象(原始事件对象)给回调函数,不传递第二个ui对象给handler函数。

3 以编码的方式控制dialog

Method Used to..
close 关闭或隐藏dialog
destroy 永远禁用dialog。destroy方法轻微的不同。与其他控件的destroy将下层HTML返回到原始状态相比,dialog的destroy方法仅仅是隐藏它
disable 临时禁用
enable 如果被禁用,启用它
isOpen 检测有没有打开
moveToTop 将指定dialog移动到stack的顶部
open  
option dialog初始化后,get 或 set 其配置选项
widget 返回调用 dialog() 方法的外层元素

3.1 切换dialog的状态

hello
$(function(){
var dialogOpts = {
autoOpen:false };
$("#myDialog").dialog(dialogOpts);
$("#button").click(function(){
if($("#myDialog").dialog("isOpen")){
$("#myDialog").dialog("close")
}
else{
$("#myDialog").dialog("open")
}
});
});
</script>

4 从dialog获取数据

因为控件是下层页面的一部分,所以传递和接收数据都很简单。

<p>Please answer the opinion poll:
<p>Is jQuery UI the greatest JavaScript widget library?
<label for="yes">Yes!
<label for="no">No!
$(function(){
var dialogOpts = {
buttons:{
"OK":function(){
var answer=$("#myDialog").find("input:checked").val();
$("<p>").text("Thanks for selecting "+answer).appendTo($("body"));
$("#myDialog").dialog("close");
},
"Cancel":function(){
$("#myDialog").dialog("close");
}
}
};
$("#myDialog").dialog(dialogOpts);
});
</script>

5 创建一个动态的基于图片的dialog

#thumbs { width:342px; padding:10px 0 10px 10px; border:1px solid #ccc; background-color:#eee; } #thumbs p { width:330px; font-family:Verdana; font-size:9px; text-align:center; } .thumb { width:310px; height:114px; padding:10px; border:1px solid #ccc; border-bottom:none; } .last { border-bottom:1px solid #ccc;} .thumb img { border:1px solid #ccc; margin-right:10px; float:left; cursor:pointer; } .thumb h3 { margin:0; float:left; width:198px;} #thumbs .thumb p { width:310px; margin:0; font-family:Verdana; font-size:13px; text-align:left; } #thumbs .ui-widget-header { width:330px; text-align:center;} $(function(){
var filename,
titleText,
dialogOpts={
modal:true,
width:388,
height:470,
autoOpen:false,
open:function(){
$("#dialog").empty();
$("<img />").attr("src",filename).appendTo("#dialog");
$("#dialog").dialog("option","title",titleText);
}
};
$("#dialog").dialog(dialogOpts);
$("#thumbs").find("a").click(function(e){
console.log("click");
e.preventDefault();
filename=$(this).attr("href");
console.log(filename);
titleText=$(this).attr("title");
$("#dialog").dialog("open");
});
});
</script>

首先,我们定义了三个变量,第一个是用来记录被点击的缩略图的全尺寸图片的路径,第二个是用来存储图片标题,作为空间的标题,第三个是dialog的配置对象。

open 选项的回调函数,会在dialog被打开前触发,所以我们可以把全尺寸图片加到dialog。

从<a>元素里取出其src时,应该用 attr(“href”)。用attr(“src”)的话取不到。

【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.6.Dialog控件的更多相关文章

  1. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.10.Button 和 Autocomplete控件

    Button ,可以使用 <button> <input> <a>. <input> 中的不同类型,submit , radio , checkbox ...

  2. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.8.Datepicker控件

    默认datepicker的安装启用 探索它的配置选项 安装启用一个触发按钮 配置一个供选择的动画 dateFormat选项 简单的国际化 多月datepicker 日期范围选择 datepicker的 ...

  3. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.7.Slider控件

    默认slider的安装启用 为slider自定义风格 修改配置选项 创建一个垂直的slider 设置最大最小值,和默认值 启用多个 手柄 和 范围 slider内置的回调事件 slider的方法 这个 ...

  4. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.5.Accordion控件

    accordion是另一个UI控件,能允许你将一组content加入相互分隔的.能够被浏览者的交互打开或关闭的panels中.因此,它大多数的content在初始化的时候是隐藏的,很像tabs控件.每 ...

  5. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.4.Tabs控件

    之前,我们已经介绍了 jQuery UI 库,CSS 框架.下面,我们将学习这些有增强可视化效果,高度可配置的用户交互组件. Tab 的特性是,点击 tab 后,会高亮该 tab,并显示他的关联con ...

  6. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.3.创建控件

    像jQuery提供 fn.extend() 方法从而可以简单地创建插件一样,jQuery UI也提供了机制使得创造插件变得简单,也确保了公共API功能在新的插件中被保留. 1.首先,创建一个名为  j ...

  7. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.2.更换主题

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.1.CSS框架和其他功能

    jquery.ui.all.css 1.所有主题必须的文件都包含在这个文件中.它由ui.base.css和ui.them.css两个文件中拉入的@import执行构成. jquery.ui.base. ...

  9. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.9.Progressbar控件

    Progressbar控件用来显示任意进程的完成百分比. 默认安装启用 配置选项 控件暴露的事件API progressbar暴露的独一无二的方法 一些现实生活的例子 当前版本中,我们或系统必须明确进 ...

随机推荐

  1. 在Xcode6.1.1模拟器中点击UITextView不出现软键盘?

    使用Xcode6.1.1做一个小项目时,在storyboard中添加了一个UITextField,使用模拟器运行后,点击UITextField出现光标,也可以从外接键盘上输入文字,但是就是不出现软键盘 ...

  2. C# --通过枚举获取系统颜色

    public static System.Drawing.Color GetSystemColor(int i) { Array Colors = System.Enum.GetValues(type ...

  3. yaffs文件系统

    1. 概述yaffs文件系统专为Nandflash设计的日志文件系统,占用page中oob区域.目前有两个版本的yaffs文件系统.nandflash不可靠,存在坏块,存在数据错误,需要软件弥补纠正此 ...

  4. 第四篇 SQL Server代理配置数据库邮件

    本篇文章是SQL Server代理系列的第四篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.SQL Serve ...

  5. Mac 加密软件

    1,花了127块买一个mac 加密软件 hider2,发现他只是把整个文件加密后,加入到某个包里面,然后删除了原文件,这个简单的功能竟然要收取我这么多钱 2. 然后找个开源的加密软件:PGP, 有GU ...

  6. Oracle Hang Manager

    名词术语1.Cross Boundary Hang 交叉边界hang.在12.1.0.1中,hang manager可以检测database和asm之间的hang.2.Deadlock or Clos ...

  7. 对jsp可见域的变量感悟

    page  变量当前页面有效 reqeust 某次请求中的变量有效 session 某次会话中的变量有效 application 全站有效 page<request<session< ...

  8. Leetcode: Nth Digit

    Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... Note: n i ...

  9. 基于Qt Phonon模块实现音乐播放器

    这次使用Qt实现的是一个本地音乐播放器,可以播放下载在计算机本地的音乐,提供了添加歌曲,歌曲列表,清空列表的功能.默认歌曲列表循环播放.音乐播放的实现主要依赖的是Qt 的多媒体框架phonon.该音乐 ...

  10. 转:Python一些特殊用法(map、reduce、filter、lambda、列表推导式等)

    Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...