前端easyui的简化调用
easyui近期一直都比较流行,虽然它在效果上被extjs爆了,它的使用难度低,在IE6下表现不错,的确受到了广泛企业程序员的好评。
但是他的API说明还是比较简陋的,刚上手可能还需要摸索一下,为什么这样做不会来?
我做了一些封装
尽量地封装,隐藏它的API,保持简单调用。
不要担心看不懂,最后还提供Demo下载。
工作开始
Tabs
先贴一张简陋的图,与官方的Demo差不多,但是在Tabs中只加入一个模仿VS的右键菜单,并且设置了选项卡最大个数,打开选项卡时超出最大个数会关闭一个。
另外做了写控制,不会重复打开选项卡。
总体上定义一个jeasyui的类,可以看到他包含Tabs,Messager,Redirect这几个部分的功能。
var jeasyui = {
Tabs: {} , //选项卡
Messager: {}, //消息框
Redirect:{} //重定向
};
先来看看Tabs
/*
选项卡
id easyui标签的ID
maxlength 设置选项卡最大个数
*/
jeasyui.Tabs = function (id, maxlength) {
this.id = id;
this.maxlength = maxlength;
this.currTabCount = 1;
//自动关闭选项卡函数
this.autoCloseTab = function () {
$('#' + this.id).tabs('close', 1);
};
//关闭指定选项卡函数
this.CloseTab = function (title) {
$('#' + this.id).tabs('close', title);
};
//关闭除选中外所有选项卡函数
this.CloseAllTabExceptThis = function (title) {
var alltabs = $('#' + this.id).tabs('tabs');
var currtab = $('#' + this.id).tabs("getTab", title);
var titlelist = new Array();
var listcount = 0;
for (var i = 0; i < alltabs.length; i++) {
if (alltabs[i] != currtab && alltabs[i].panel('options').title != "首页") {
titlelist[listcount] = alltabs[i].panel('options').title;
listcount++;
}
}
for (var j = 0; j < listcount; j++) {
$('#' + this.id).tabs('close', titlelist[j]);
}
};
};
//添加一个选项卡
jeasyui.Tabs.prototype.addTab = function (titleName, url) {
if (!this.exists(titleName)) {
//var iframe = $('<iframe style="width:100%;height:100%;border:0" />');
$('#' + this.id).tabs('add', {
title: titleName,
//content: iframe,
href:url,
closable: true,
cache: true,
fit: true
});
//iframe.attr('src', url);
} else {
this.selectTab(titleName);
}
};
//选中指定选项卡(参数titleName:选项卡标题名)
jeasyui.Tabs.prototype.selectTab = function (titleName) {
$('#'+this.id).tabs('select', titleName);
};
//获取当前选项卡
jeasyui.Tabs.prototype.getSelected = function () {
return $('#' + this.id).tabs('getSelected');
};
//刷新选项卡(参数tab:选项卡)
jeasyui.Tabs.prototype.refresh = function (tab) {
tab.panel('refresh', tab.panel('options').href);
};
//验证选项卡是否存在(参数titleName:选项卡标题名)
jeasyui.Tabs.prototype.exists = function (titleName) {
var tab = $('#' + this.id).tabs('exists', titleName);
return tab;
};
使用起来也比较简单,右键菜单的事件如下。
var jtab = new jeasyui.Tabs('tabs', 10); function AddTab(obj) {
jtab.addTab(obj.title, obj.url);
} function CloseCurrTab() {
var title = $('#hidCurrTab').val();
jtab.CloseTab(title);
} function ReloadTab() {
var selectedTab = jtab.getSelected();
jtab.refresh(selectedTab);
} function CloseAllTabExceptThis() {
var title = $('#hidCurrTab').val();
jtab.CloseAllTabExceptThis(title);
}
构建选项卡,这里注意下tabs的几个事件的绑定。
$(document).ready(function () {
//构建手风琴
var aaOptions = {
fit: true,
border: false
};
$('#aa').accordion(aaOptions); //构建选项卡
var tabsOptions = {
fit: true,
tools: '#tab-tools',
onContextMenu: function (e, title) {
e.preventDefault();
if (title == "首页") {
$('#mm-closeone').attr('style', 'display:none');
} else {
$('#mm-closeone').attr('style', '');
}
$('#mm').menu('show', { left: e.pageX, top: e.pageY })
$('#hidCurrTab').val(title);
},
onAdd: function (title) {
jtab.currTabCount++;
if (jtab.currTabCount > jtab.maxlength) {
jtab.autoCloseTab();
}
},
onClose: function (title) {
jtab.currTabCount--;
}
};
$('#tabs').tabs(tabsOptions);
});
消息框,这里可以衍生出更丰富的功能,比如确认后执行一个函数,只要稍稍改动即可,比较简单的。
而且经过封装之后可以提高开发效率,因为我设置了一些参数的默认值,这样在一般情况下可以少输入一些参数。
jeasyui.Messager = {}; //提示框 jeasyui.Messager.Show = function (message, titleName, time, type) {
titleName = titleName || '提示';
type = type || 'slide';
time = time || ;
$.messager.show({
title: titleName,
msg: message,
timeout: time,
showType: type
});
}; //弹出提示信息
jeasyui.Messager.Alert = function (msg, title, type) {
title = title || '提示';
type = type || 'info';
$.messager.alert(title, msg, type);
}; //弹出提示确认后重定向
jeasyui.Messager.ConfirmAndRedirect = function (msg, title, url) {
title = title || '提示';
$.messager.confirm(title, msg, function (r) {
if (r) {
location.href = url;
}
});
}; //弹出提示确认后关闭窗口
jeasyui.Messager.ConfirmAndClose = function (msg, title) {
title = title || '提示';
$.messager.confirm(title, msg, function (r) {
if (r) {
window.close();
parent.location.href = parent.location.href;
}
});
}; //弹出提示信息后父窗体重定向
jeasyui.Messager.MRedirect = function (msg, url, title ) {
title = title || '提示';
$.messager.alert(title, msg, 'info', function () {
location.href = url;
});
}; //弹出提示信息后重定向
jeasyui.Messager.Redirect = function (msg, url, title) {
title = title || '提示';
$.messager.alert(title, msg, 'info', function () {
var selectedTab = $('#tabs').tabs('getSelected');
selectedTab.panel('refresh', url);
});
}; //进度条开启
jeasyui.Messager.ProgressOpen=function () {
$.messager.progress({
msg: '正在处理,请稍后...',
interval:
});
} //进度条关闭
jeasyui.Messager.ProgressClose=function () {
$.messager.progress('close');
}
这次报告就到这里,感谢阅读。
附件下载:easyuiframe.rar
前端easyui的简化调用的更多相关文章
- 【tornado】系列项目(二)基于领域驱动模型的区域后台管理+前端easyui实现
本项目是一个系列项目,最终的目的是开发出一个类似京东商城的网站.本文主要介绍后台管理中的区域管理,以及前端基于easyui插件的使用.本次增删改查因数据量少,因此采用模态对话框方式进行,关于数据量大采 ...
- [WPF自定义控件库]使用TextBlockHighlightSource强化高亮的功能,以及使用TypeConverter简化调用
1. 强化高亮的功能 上一篇文章介绍了使用附加属性实现TextBlock的高亮功能,但也留下了问题:不能定义高亮(或者低亮)的颜色.为了解决这个问题,我创建了TextBlockHighlightSou ...
- 2-5 利用RestTemplateCore简化调用Consul中的服务
1.必须要安装RestTemplateCore包 2.请求服务,必须要知道 a Consul服务器的地址:b 请求的服务名 ;c 具体请求的api接口 利用RestTemplateCore简化调用Co ...
- Jquery EasyUI封装简化操作
//confirm function Confirm(msg, control) { $.messager.confirm('确认', msg, function (r) { if (r) { eva ...
- 前端使用d3.js调用地图api 进行数据可视化
前段时间自己研究了demo就是把某个区域的某个位置通过经纬度在地图上可视化.其实就是使用了第三方插件,比现在比较火的可视化插件d3.js echart.js.大致思路就是,把要用到的位置的geojso ...
- 【Axios】前端页面使用axios调用后台接口
项目基本情况 前端项目是用vue.js做的,前端起的服务URL:http://localhost:8080/ 后端项目是用Node.js做的,后端起的服务URL:http://localhost:30 ...
- java web前端easyui(layout+tree+双tabs)布局+树+2个选项卡tabs
1.列出要实现的样式: 2.实现的代码: 分三大部分: 1):页面主体部分:mian.vm <html> <head> <title>Ks UI</title ...
- EasyUI相同的Tab只打开一个(即EasyUI方法的调用方法)
function addTabA(title){ if ($('#tt').tabs('exists', title)){ $('#tt').tabs('select', title); } else ...
- 搭建nginx代理,为前端页面跨域调用接口
前端同学因开发需要,本地搭建的服务需要调用其它域名的接口,在帮助正确配置后,已能正常使用. 这里写一篇博客,记录一下. 前端页面地址为127.0.0.1:9813/a.html 接口地址http:// ...
随机推荐
- 用友android
获取token要改 value要改 不用通配符 直接双引号
- jquery+css3实现3d滚动旋转
最近有个漂亮妹子一直在向我推销潭州的视频,BUT我以前就看了一次觉得挺水的,就对那个妹子表示吾孤高.你们那玩意没意义的很弱.然后那个漂亮妹子锲而不舍的对我发链接,这个效果会吗,这个幻灯会写吗...我也 ...
- flask 知识点总结
============================request对象的常用属性============================具体使用方法如下:request.headers, requ ...
- 密码学初级教程(五)消息认证码MAC-Message Authentication Code
密码学家工具箱中的6个重要的工具: 对称密码 公钥密码 单向散列函数 消息认证码 数字签名 伪随机数生成器 MAC能识别出篡改和伪装,也就是既可以确认消息的完整性,也可以进行认证. 消息认证码的输入包 ...
- [译]git add
git add git add命令把工作目录下面的有修改的文件添加的index(staging)里面去. git add告诉Git你想在下次commit的时候把什么文件包含进去. 但是, git ad ...
- VCF (Variant Call Format)格式详解
文章来源:http://www.cnblogs.com/emanlee/p/4562064.html VCF文件示例(VCFv4.2) ##fileformat=VCFv4.2 ##fileDate= ...
- JSON格式转换(javascript)
使用ajax从后台抓取数据后,如果有多个值,可以使用json传值. ajax例子如下,在返回的类型里面,可以是文本型(text),JSON格式(json),超文本类型(html),XML文件类型(xm ...
- spring框架搭建url
MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建 http://blog.csdn.net/zhshulin/article/details/30779873 MyEclipse下 ...
- mysql解决自动断开8小时未曾用过的链接
今天有运维的同事反映,发布关键词不太稳定,点了没反应.就去线上看了一下日志,发现数据库没有链接,就查了一下问题 关于mysql自动断开的问题研究结果如下,在mysql中有相关参数设定,当数据库连接空闲 ...
- Ajax前台调用后台方法、AJAX Pro2(回调函数)
//获取分店 function cityResult() { if (cityName != "") { $("#ddlcity_").find("o ...