用了下bootstrap,虽然好看,但是控件跟之前用的easyui相差很大,功能太少,不得不自己写。
花了几个小时把tabs控件扩展了下。下面是代码
页面代码:
.pagetabs{height:41px;}
.nav-tabs>li{padding:01px;}
.nav-tabs>li>a{color:#555;padding:8px25px8px15px;border-top:4pxsolidtransparent;background-color:#eee;border:1pxsolid#ddd;border-bottom-color:transparent;}
.nav-tabs>li>a>.close{display:inline-block;float:inherit;position:absolute;top:1px;font-size:18px;font-weight:inherit;right:5px;}
.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{border-top:4pxsolid#ffa405;}
.nav-tabs>li>a:hover{background-color:#e3e3e3;border:1pxsolid#ddd;border-bottom-color:transparent;}
.pagetabs.dropdown-toggle,.pagetabs.dropdown-toggle:hover{border:none;background-color:transparent;padding:8px;}
控件代码:
//选项卡
varTabs=(function($){
varoptions={
selector:undefined,//
close:false,//是否可以关闭标签
//contextmenu:false,//右键菜单
closeCallback:function(){}
};
var_newtab;
var_tabcontent;
var_drop;
vartab=function(){
this.options={
title:"",
bindcode:undefined,
url:undefined,
close:false
};
varisfull=false;
this.init=function(setting){
$.extend(this.options,setting);
};
this.addtab=function(setting){
$.extend(this.options,setting);
varli,litop,hasdata;
if(!_drop){
_drop=newdroplist();
};
hasdata=ishas(this.options);
if(!hasdata.has){
li=$('
'+this.options.title+'×');
li.data("data",$.extend(true,{},this.options));
}else{
li=hasdata.selector.off("click");
};
li.prependTo(options.selector);
li.find("span.close").show().on("click",function(){
closetab(this);
});
options.selector.children("li").not(li).removeClass("active");
li.addClass("active");
litop=_drop.options.selector.position().top,paneltop=options.selector.position().top;
if(litop>paneltop){//超出检测
_drop.addDropItem();
};
};
functionclosetab(target){
varpager=$(target).parent().attr("href");
$(target).closest("li").remove();
options.selector.next().find(pager).remove();
if(options.selector.find("li.active").length<=0){
options.selector.find("li>a:first").tab("show");
};
varli=_drop.options.ulpanel.children("li:first");
if(li.length<=0)return;
li.find("span.close").show();
_drop.options.selector.before(li);
if(_drop.options.selector.position().top>options.selector.position().top){
li.find("span.close").hide();
_drop.options.ulpanel.append(li);
return;
};
li.off("click");
if(_drop.options.ulpanel.children("li").length<=0){
_drop.options.selector.css({"visibility":"hidden"});
};
};
functionishas(setting){//检测选项卡是否存在
varlis=options.selector.find("li"),lidata,hasdata;
hasdata={selector:undefined,has:false};
$.each(lis,function(){
lidata=$(this).data("data");
if(!lidata)returntrue;
if(lidata.title===setting.title&&lidata.bindcode===setting.bindcode&&lidata.url===setting.url){
hasdata={selector:$(this),has:true};
returnfalse;
};
});
returnhasdata;
};
};
vartabcontent=function(){
this.options={
selector:undefined
};
varoption={
bindcode:undefined,
url:undefined,
content:undefined
};
this.init=function(){
varcontent=$('
');
this.options.selector=content;
options.selector.after(this.options.selector);
};
this.addContent=function(setting){
varpage,iframe;
$.extend(option,setting);
hasdata=ishas(option);
if(!hasdata.has){
page=$('