前端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:// ...
随机推荐
- shell学习之路:shell基础大全1
http://note.youdao.com/share/?id=a9d02257b639c94323c818bc38423919&type=note 别名命令alias:http://n ...
- ADB常用命令(Android Debug Bridge)
首先要配置环境变量. adb devices 列出所有的设备 adb start-server 开启adb服务 adb kill-server 关闭adb服务 adb logcat 查看L ...
- 1、Java背景、标示符、运算符、转义字符
一.Java平台: 1.Java的创建:1991年由SUN公司创建. 2.Java的特点:面向对象.可移植性.多线程.分布式.可靠.安全. 3.Java的三个架构:JavaEE.JavaSElect. ...
- vs 工程连接错误
现象: estMemPool.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: _ ...
- BNR Android Demo学习笔记(一)——CrimeIntent
开发环境:win7,Android Studio 1.2, 1.Model Crime,数据模型,每个Crime有一个UUID作为唯一标识. package tina.criminalintent; ...
- Mac安装OpenCV
安装过程参考这篇文章Mac平台上OpenCV开发环境搭建 也可以参考文档官网上的安装文档Installation in Linux(不知道为什么没有Installation in Mac...) 我的 ...
- Asp.net 网站防攻击安全设置
针对已解密的_ViewStat参数漏洞整改建议:在<system.web>下添加 <machineKey validation="3DES"/> 禁用脚本调 ...
- Python制作统计图形
转载自:http://www.dcharm.com/?p=15 Python一般使用Matplotlib制作统计图形,用它自己的说法是‘让简单的事情简单,让复杂的事情变得可能’.(你说国外的“码农”咋 ...
- XH
1. 又到父亲节,那就给老爹做顿饭呗,让他开心开心. 老爸吃了一口我炒的菜,流露出感动的泪花说:儿呀,你能为爸爸做饭,爸爸感到特别开心,但是你这个菜,看在今天是父亲节 我能不能不吃呀! 2. 一哥 ...
- Inorder Successor in Binary Search Tree
Given a binary search tree (See Definition) and a node in it, find the in-order successor of that no ...