上次讲了给jui(dwz)的菜单树换一套漂亮的图标,这次讲一下在点击菜单后,怎么把设置的漂亮图标带到navTab上去。

官方的navTab是这样显示的,除了默认的我的主页外,tab页上只有标题没有图标。

而修改后的是这样的,相应的都带上了上次讲过的漂亮的图标了。

想要实现这种效果,我们需要修改JUI(DWZ)的核心JS,打开dwz.js,找到$("a[target=navTab]", $p)

$("a[target=navTab]", $p).each(function () {
$(this).click(function (event) {
var $this = $(this);
var title = $this.attr("title") || $this.text();
var tabid = $this.attr("rel") || "_blank";
var fresh = eval($this.attr("fresh") || "true");
var external = eval($this.attr("external") || "false");
var icos = $this.attr("icos") || "fa fa-cog fa-lg fa-fw";//注意这里,添加这一句,意思是,获取html属性icos,如果没有,就指定一个。
var url = unescape($this.attr("href")).replaceTmById($(event.target).parents(".unitBox:first"));
DWZ.debug(url);
if (!url.isFinishedTm()) {
alertMsg.error($this.attr("warn") || DWZ.msg("alertSelectMsg"));
return false
}
navTab.openTab(icos,tabid, url, { //同时注意这里,给openTab加了一个icos的参数,也就是传过去一个图标字符串的参数
title: title,
fresh: fresh,
external: external
});
event.preventDefault()
})
});

然后,继续查找    navTab.openTab,按注释修改或添加代码

openTab: function (icos,tabid, url, options) {
var op = $.extend({
title: "New Tab",
type: "GET",
data: {},
fresh: true,
external: false
}, options);
var iOpenIndex = this._indexTabId(tabid);
if (iOpenIndex >= 0) {
var $tab = this._getTabs().eq(iOpenIndex);
var span$ = $tab.attr("tabid") == this._op.mainTabId ? "> span > span" : "> span";
//20160906添加tab图标,传入icos为图标字符串
var tabfrag = '<i class="#icos#"></i>';
var tabfrag1 = tabfrag.replaceAll("#icos#", icos);
//这一句实现了在navTab前面加上图标
$tab.find(">a").attr("title", op.title).find(span$).html(tabfrag1 + op.title); var $panel = this._getPanels().eq(iOpenIndex);
if (url && (op.fresh || $tab.attr("url") != url)) {
$tab.attr("url", url);
if (op.external || url.isExternalUrl()) {
$tab.addClass("external");
navTab.openExternal(url, $panel)
} else {
$tab.removeClass("external");
$panel.ajaxUrl({
type: op.type,
url: url,
data: op.data,
callback: function () {
navTab._loadUrlCallback($panel)
}
})
}
}
this._currentIndex = iOpenIndex
} else {
//同样,这里是新打开的tab,作同样的处理
var tabFrag = '<li tabid="#tabid#"><a href="javascript:" title="#title#" class="#tabid#"><span><i class="#icos#"></i> #title#</span></a><a href="javascript:;" class="close">close</a></li>';
this._tabBox.append(tabFrag.replaceAll("#tabid#", tabid).replaceAll("#title#", op.title).replaceAll("#icos#",icos));
this._panelBox.append('<div class="page unitBox"></div>');
this._moreBox.append('<li><a href="javascript:" title="#title#">#title#</a></li>'.replaceAll("#title#", op.title));
var $tabs = this._getTabs();
var $tab = $tabs.filter(":last");
var $panel = this._getPanels().filter(":last");
if (url) {
if (op.external || url.isExternalUrl()) {
$tab.addClass("external");
navTab.openExternal(url, $panel)
} else {
$tab.removeClass("external");
$panel.ajaxUrl({
type: op.type,
url: url,
data: op.data,
callback: function () {
navTab._loadUrlCallback($panel)
}
})
}
}
if ($.History) {
setTimeout(function () {
$.History.addHistory(tabid, function (tabid) {
var i = navTab._indexTabId(tabid);
if (i >= 0) {
navTab._switchTab(i)
}
}, tabid)
}, 10)
}
this._currentIndex = $tabs.size() - 1;
this._contextmenu($tabs.filter(":last").hoverClass("hover"))
}
this._init();
this._scrollCurrent();
this._getTabs().eq(this._currentIndex).attr("url", url)
}

JS修改好后,HTML页面上添加一个属性就可以了。

<li><a href="@Url.Content("~/CarManage/Index")" target="navTab" rel="carindex" icos="fa fa-bus fa-fw"><i class="fa fa-bus fa-lg fa-fw"></i>  车辆管理</a></li>

注意icos属性,这是自己添加的给JS识别用的。

同样,图标还是用的上次讲的图标文件。

至此,navTab的图标美化也做好了。界面是不是又多了一眼看看?

如有问题请留言!

最新文章

  1. EasyUI DateTimeBox设置默认时间的注意点
  2. storm坑之---传递对象
  3. 多年前写的DataTable与实体类的转换,已放github
  4. [C#] AY.WPF-图形编程-高中生为起点-研究报告1
  5. PMP考试--关于职业道德
  6. 2013 ACM/ICPC Asia Regional Changsha Online&ndash;C (模拟)
  7. 399. Evaluate Division
  8. unexpected problem
  9. MVC 模型、视图、控制及其单入口文件的mvc的工作原理
  10. c语言-函数的定义及传参
  11. libevent for android
  12. LINUX下分区命令Parted详解
  13. java获取当前上一周、上一月、上一年的时间
  14. springboot 中事件监听模型的一种实现
  15. SQL Server 安装好后 Always On群组配置
  16. Kowala协议:一组分布式,自我调节,资产跟踪特性的加密货币(二)
  17. 2018.10.31 bzoj3339&&3585mex(主席树)
  18. final、finally、 finalize 有什么不同
  19. CRM 2016 级联过滤 类比省市县
  20. iOS - AsyncSocket 的使用

热门文章

  1. 058_Component Bundles
  2. 小凡的Python之路——安装
  3. BZOJ1008 [HNOI2008]越狱 (快速幂,组合)
  4. 安装ELK(Elasticsearch、Kibana、Logstash)
  5. bzoj 3924
  6. APP性能测试——热启动耗时测试
  7. Java中Math类常用方法
  8. 【APT】响尾蛇(SideWinder)Hta文件自动解密C2
  9. Django框架搭建web项目(一)
  10. C++ PTA 小于m的最大的10个素数