【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.6.Dialog控件
习惯上,我们播放一条简短的信息,或向浏览者询问一个问题,都会用到dialog。
- 创建一个基本的dialog
- 使用dialog 选项
- 形式
- 启用内置动画
- 给dialog添加按钮
- 使用dialog回调函数
- 编码的形式控制dialog
1 创建一个基本的dialog
使用 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必须被交互。
modal:true
};
完全由CSS framework创建的覆盖层,所以可以通过 ThemmeRoller 进行配置主题。我们也能使用自己的图片。ui-widget-overlay被加载覆盖层上,这个选择器是自定义时必须的。
1.4 添加按钮组
button 选项接受一个对象,用来指定不同的 button 元素如何呈现。每个 property:value pair代表一个单独的按钮。
modal:true,
buttons:{
"OK":function(){},
"Cancel":function(){}
}
};
buttons对象中的 key 是 button的文本, value是按钮点击后,所执行的回调函数的名字。
1.5 启用dialog动画
show: true,
hide: true
};
启用内置的效果,会优雅地减小dialog的尺寸,并 透明知道它优雅地小时。
1.6 配置dialog的规模大小
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 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的状态
$(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>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
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控件的更多相关文章
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.10.Button 和 Autocomplete控件
Button ,可以使用 <button> <input> <a>. <input> 中的不同类型,submit , radio , checkbox ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.8.Datepicker控件
默认datepicker的安装启用 探索它的配置选项 安装启用一个触发按钮 配置一个供选择的动画 dateFormat选项 简单的国际化 多月datepicker 日期范围选择 datepicker的 ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.7.Slider控件
默认slider的安装启用 为slider自定义风格 修改配置选项 创建一个垂直的slider 设置最大最小值,和默认值 启用多个 手柄 和 范围 slider内置的回调事件 slider的方法 这个 ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.5.Accordion控件
accordion是另一个UI控件,能允许你将一组content加入相互分隔的.能够被浏览者的交互打开或关闭的panels中.因此,它大多数的content在初始化的时候是隐藏的,很像tabs控件.每 ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.4.Tabs控件
之前,我们已经介绍了 jQuery UI 库,CSS 框架.下面,我们将学习这些有增强可视化效果,高度可配置的用户交互组件. Tab 的特性是,点击 tab 后,会高亮该 tab,并显示他的关联con ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.3.创建控件
像jQuery提供 fn.extend() 方法从而可以简单地创建插件一样,jQuery UI也提供了机制使得创造插件变得简单,也确保了公共API功能在新的插件中被保留. 1.首先,创建一个名为 j ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.2.更换主题
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 【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. ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.9.Progressbar控件
Progressbar控件用来显示任意进程的完成百分比. 默认安装启用 配置选项 控件暴露的事件API progressbar暴露的独一无二的方法 一些现实生活的例子 当前版本中,我们或系统必须明确进 ...
随机推荐
- 智能硬件+App移动新生态【北京、广州、深圳】
智能硬件+App移动新生态[10.24北京站] 时间:2015年10月24日13:30-16:30 地点:Wepac空间(海淀区北四环西路68号左岸工社6层) 主办:APICloud.机智云.智石科技 ...
- shell中引用其他脚本的方法
在Shell中引用其他脚本的方法是source filename.sh 或 . filename.sh 注意: . 和 filename.sh之间必须有空格
- The L1 Median (Weber 1909)
The L1 Median (Weber 1909) 链接网址 Derived from a transportation cost minimization problem, the L1 medi ...
- VS2013+qt-vs-addin-1.2.4安装配置
--------------------------开头这部分可以跳过,仅作为笔记----------------------- 我问过的问题: http://www.codeproject.com/ ...
- 由浅到深讲解C#-LINQ
在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前, 我们在声明一个变量的时候, 总是要为一个变量指定他的类型 甚至在fore ...
- duplicate命令创建physical standby数据库报RMAN-03015 ORA-17628
The following error is reported trying to create a Physical Standby database using "duplicate f ...
- System.Threading.Timer使用心得
System.Threading.Timer 是一个使用回调方法的计时器,而且由线程池线程服务,简单且对资源要求不高. "只要在使用 Timer,就必须保留对它的引用."对于任何托 ...
- WEB urllib2 module note
收藏好文,看的懂文档,但效率太慢 cookie 清空 import urllib2 import cookielib from time import sleep cookie=cookielib.C ...
- Dive into python 实例学python (1) —— 函数和测试
odbchelper.py def buildConnectionString(params): """Build a connection string from a ...
- 实验十四_访问CMOS RAM
编程:以"年/月/日 时:分:秒"的格式,显示当前的日期,时间. 注意:CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元写入内容,否则将引起一些系 ...