easyui源码翻译1.32--Dialog(对话框窗口)
前言
扩展自$.fn.window.defaults。使用$.fn.dialog.defaults重写默认值对象。下载该插件翻译源码
该对话框是一种特殊类型的窗口,它在顶部有一个工具栏,在底部有一个按钮栏。对话框窗口右上角只有一个关闭按钮用户可以配置对话框的行为显示其他工具,如collapsible,minimizable,maximizable工具等。
源码
/**
* jQuery EasyUI 1.3.2
*
*翻译:qq 1364386878 对话框窗口
*/
(function ($) {
//包裹对话框窗口
function wrapDialog(target) {
var cp = document.createElement("div");
while (target.firstChild) {
cp.appendChild(target.firstChild);
}
target.appendChild(cp);
var contentPanel = $(cp);
contentPanel.attr("style", $(target).attr("style"));
$(target).removeAttr("style").css("overflow", "hidden");
contentPanel.panel({
border: false,
doSize: false,
bodyCls: "dialog-content"
});
return contentPanel;
};
//初始化
function init(jq) {
var options = $.data(jq, "dialog").options;
var contentPanel = $.data(jq, "dialog").contentPanel;
if (options.toolbar) {
if (typeof options.toolbar == "string") {
$(options.toolbar).addClass("dialog-toolbar").prependTo(jq);
$(options.toolbar).show();
} else {
$(jq).find("div.dialog-toolbar").remove();
var toolbar = $("<div class=\"dialog-toolbar\"><table cellspacing=\"0\" cellpadding=\"0\"><tr></tr></table></div>").prependTo(jq);
var tr = toolbar.find("tr");
for (var i = 0; i < options.toolbar.length; i++) {
var buttons = options.toolbar[i];
if (buttons == "-") {
$("<td><div class=\"dialog-tool-separator\"></div></td>").appendTo(tr);
} else {
var td = $("<td></td>").appendTo(tr);
var tool = $("<a href=\"javascript:void(0)\"></a>").appendTo(td);
tool[0].onclick = eval(buttons.handler || function () {
});
tool.linkbutton($.extend({}, buttons, { plain: true }));
}
}
}
} else {
$(jq).find("div.dialog-toolbar").remove();
}
if (options.buttons) {
if (typeof options.buttons == "string") {
$(options.buttons).addClass("dialog-button").appendTo(jq);
$(options.buttons).show();
} else {
$(jq).find("div.dialog-button").remove();
var _b = $("<div class=\"dialog-button\"></div>").appendTo(jq);
for (var i = 0; i < options.buttons.length; i++) {
var buttons = options.buttons[i];
var button = $("<a href=\"javascript:void(0)\"></a>").appendTo(_b);
if (buttons.handler) {
button[0].onclick = buttons.handler;
}
button.linkbutton(buttons);
}
}
} else {
$(jq).find("div.dialog-button").remove();
}
var href = options.href;
var content = options.content;
options.href = null;
options.content = null;
//渲染面板
contentPanel.panel({
closed: options.closed,
cache: options.cache,
href: href,
content: content,
onLoad: function () {
if (options.height == "auto") {
$(jq).window("resize");
}
options.onLoad.apply(jq, arguments);
}
});
$(jq).window($.extend({}, options, {
onOpen: function () {
if (contentPanel.panel("options").closed) {
contentPanel.panel("open");
}
if (options.onOpen) {
options.onOpen.call(jq);
}
},
onResize: function (width, height) {
var win = $(jq);
contentPanel.panel("panel").show();
contentPanel.panel("resize", {
width: win.width(),
height: (height == "auto") ? "auto" : win.height() - win.children("div.dialog-toolbar")._outerHeight() - win.children("div.dialog-button")._outerHeight()
});
if (options.onResize) {
options.onResize.call(jq, width, height);
}
}
}));
options.href = href;
options.content = content;
};
//刷新
function _refresh(jq, content) {
var contentPanel = $.data(jq, "dialog").contentPanel;
contentPanel.panel("refresh", content);
}; //实例化对话框
$.fn.dialog = function (target, parm) {
if (typeof target == "string") {
var method = $.fn.dialog.methods[target];
if (method) {
return method(this, parm);
} else {
return this.window(target, parm);
}
}
target = target || {};
return this.each(function () {
var dialog = $.data(this, "dialog");
if (dialog) {
$.extend(dialog.options, target);
} else {
$.data(this, "dialog", {
options: $.extend({},
$.fn.dialog.defaults,
$.fn.dialog.parseOptions(this), target),
contentPanel: wrapDialog(this)
});
}
init(this);
});
};
//默认方法
$.fn.dialog.methods = {
//返回属性对象
options: function (jq) {
var options = $.data(jq[0], "dialog").options;
var panelopts = jq.panel("options");
$.extend(options, {
closed: panelopts.closed,
collapsed: panelopts.collapsed,
minimized: panelopts.minimized,
maximized: panelopts.maximized
});
var contentPanel = $.data(jq[0], "dialog").contentPanel;
return options;
},
//返回外部对话框窗口对象
dialog: function (jq) {
return jq.window("window");
},
//刷新面板来装载远程数据。如果'href'属性有了新配置,它将重写旧的'href'属性
refresh: function (jq, href) {
return jq.each(function () {
_refresh(this, href);
});
}
};
//解析器
$.fn.dialog.parseOptions = function (target) {
return $.extend({}, $.fn.window.parseOptions(target),
$.parser.parseOptions(target, ["toolbar", "buttons"]));
};
//默认属性 同时继承window的
$.fn.dialog.defaults = $.extend({},
$.fn.window.defaults,
{
title: "New Dialog",//对话框窗口标题文本
collapsible: false,//对话框窗口标题文本
minimizable: false,//对话框窗口标题文本
maximizable: false,//对话框窗口标题文本
resizable: false,//定义是否可以改变对话框窗口大小
//设置对话框窗口顶部工具栏,可用值有:
//1) 一个数组,每一个工具栏中的工具属性都和linkbutton相同。
//2) 一个选择器指定工具栏。
toolbar: null,
//对话框窗口底部按钮,可用值有:
//1) 一个数组,每一个按钮的属性都和linkbutton相同。
//2) 一个选择器指定按钮栏。
buttons: null
});
})(jQuery);
示例代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic Dialog - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery-1.8.0.min.js"></script>
<script src="../../plugins2/jquery.parser.js"></script>
<script src="../../plugins2/jquery.linkbutton.js"></script>
<script src="../../plugins2/jquery.draggable.js"></script>
<script src="../../plugins2/jquery.resizable.js"></script>
<script src="../../plugins2/jquery.panel.js"></script>
<script src="../../plugins2/jquery.window.js"></script> <script src="../../plugins2/jquery.dialog.js"></script>
</head>
<body>
<h2>Basic Dialog</h2>
<div class="demo-info">
<div class="demo-tip icon-tip"></div>
<div>Click below button to open or close dialog.</div>
</div>
<div style="margin:10px 0;">
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="$('#dlg').dialog('open')">Open</a>
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="$('#dlg').dialog('close')">Close</a>
</div>
<div id="dlg" class="easyui-dialog" title="Basic Dialog" data-options="iconCls:'icon-save'" style="width:400px;height:200px;padding:10px">
The dialog content.
</div>
</body>
</html>
插件效果

easyui源码翻译1.32--Dialog(对话框窗口)的更多相关文章
- easyui源码翻译1.32+API翻译全篇导航 (提供下载源码)
前言 EasyUI每个组件都会有 属性.方法.事件 属性 所有的属性都定义在jQuery.fn.{plugin}.defaults里面.例如,对话框属性定义在jQuery.fn.dialog.defa ...
- easyui源码翻译1.32--Messager(消息窗口)
前言 使用$.messager.defaults重写默认值对象.下载该插件翻译源码 消息窗口提供了不同的消息框风格,包含alert(警告框), confirm(确认框), prompt(提示框), p ...
- easyui源码翻译1.32--datagrid(数据表格)
前言 此前网上有easyui1.25的源码 应该算是比较老的版本 之后又经历了1.26 . 1.3. 1.31. 1.32 .1.33.1.34 1.33开始支持css3 算是又一个转折 但是 ...
- easyui源码翻译1.32--EasyLoader(简单加载)
前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3. ...
- easyui源码翻译1.32--Tabs(选项卡)
前言 使用$.fn.tabs.defaults重写默认值对象.下载该插件翻译源码 选项卡显示一批面板.但在同一个时间只会显示一个面板.每个选项卡面板都有头标题和一些小的按钮工具菜单,包括关闭按钮和其他 ...
- easyui源码翻译1.32--Menu(菜单)
前言 使用$.fn.menu.defaults重写默认值对象.下载该插件翻译源码 菜单组件通常用于快捷菜单.他是构建其他菜单组件的必备基础组件.比如:menubutton和splitbutton.它还 ...
- easyui源码翻译1.32--Draggable(拖动)
前言 使用$.fn.draggable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:qq 1364386878 --拖动 ...
- easyui源码翻译1.32--Droppable(放置)
前言 使用$.fn.droppable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:lbq --放置 拉伸 */ (fun ...
- easyui源码翻译1.32--Resizable(调整大小)
前言 使用$.fn.resizable.defaults重写默认值对象 下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:qq 1364386878 Resiz ...
随机推荐
- VS 2015 (RC)下Entitiy Framework 升级后CodeFirst命令不能使用
前阵子闲的没事吧自己项目的Entitiy Framework 升级到6.1.3了,然后紧接着问题来了: Join-Path : 无法将参数绑定到参数“Path”,因为该参数是空值. 所在位置 F:\S ...
- Android Activity常用生命周期函数
在Activity中主要有7个常用的周期函数,他们分别是: (一)onCreate 在Activity对象被第一次创建时调用 注: 从另一个Activity返回到前一个Activity时,不会调用该函 ...
- oc语言学习之基础知识点介绍(三):类方法、封装以及继承的介绍
一.类方法的使用 /* 像我们之前学的方法,必须先实例化这个类的对象才能调用这个方法,类方法不用实例化对象,直接调用这个方法. 之前学的方法调用的语法: [对象名 方法名]; //对象方法 类方法: ...
- [转]十年前的老文:以 Linux 的名义
一.灰姑娘的狂欢 今年初,林纳斯·托瓦兹承认:“如果在12年前,有人告诉我Linux会发展到今天的模样,我肯定会惊得目瞪口呆.” 托瓦兹说的是实话.1991年,这名21岁的芬兰赫尔辛基大学的学生,偶然 ...
- OC6_字符串练习
// // QFString.h // OC6_字符串练习 // // Created by zhangxueming on 15/6/10. // Copyright (c) 2015年 zhang ...
- 用pelican搭建完美博客
前面有文章介绍本站采用了Python编写的Pelican静态生成博客系统, 之所以没有使用当前很火的Jekyll, 是因为它是Ruby编写, 而我又对Ruby没有啥兴趣, 所以还是选择了使用了我熟悉的 ...
- CSS3的几个标签速记3
transition:CSS3过渡 css3里很好的一个标签,可以非常方便的完成需要很多JS才能完成的动态效果 例语法:transition:width 2S,height 2S,transf ...
- [Effective Java读书笔记] 第二章 创建和销毁对象(1~7)
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3537576.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- https证书申请
因为要为海外组的aws设置https证书,由于使用的是新的域名,所以要先申请购买证书,然后设置上去.由于是第一次做这件事.所以过程有些坎坷. 先购买https证书.看了几家,感觉GoDad ...
- Django同步创建models table失败
django1.8通过manage.py syncdb 执行同步创建models中创建的表格失败 由于syncdb命令在1.9版本中会被remove, 需要改用makemigrations命令进行代替 ...