jquery-ui-bootstrap动态添加和删除标签页封装【效果更炫】

1、效果图

2、导入js和css

<link rel="stylesheet" href="css/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="font/Font-Awesome/css/font-awesome.css">
<link rel="stylesheet" type="text/css" href="css/jquery-ui-bootstrap/css/custom-theme/jquery-ui-1.10.0.custom.css"/>
<link rel="stylesheet" type="text/css" href="css/default.css"></head>
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script src="css/jquery-ui-bootstrap/assets/js/jquery-ui-1.10.0.custom.min.js" type="text/javascript"></script>
<script type="text/javascript" src="js/default.js"></script>

  default.css是对tabs效果绘制

/*jquery-ui-bootstrap tabs*/
.tabs ul {
/* border-bottom: 3px solid #39aef5!important;*/
}
.tabs ul li:not(:first-child){
padding-right:15px!important;
 
}
.tabs ul li{
border-top:1px solid #ccc!important;
border-left:1px solid #ccc!important;
/*border-bottom: 1px solid #39aef5!important;*/
}
.tabs ul li a{
color:#666!important;
}
.tabs ul li span:hover{
color:#C61010!important;
}
.tabs ul li a:hover,
.tabs ul li:hover,
.tabs ul li:focus{
border-bottom: 0!important;
}
.tabs ul li:last-child{
border-right:1px solid #ccc!important;
}
.tabs ul li.ui-state-active.ui-tabs-active a,
.tabs ul li.ui-state-active.ui-tabs-active span,
.tabs ul li.ui-state-active.ui-tabs-active{
	/*border-top:3px solid red!important;*/
	background: #39aef5!important;
	border-bottom: 2px solid #39aef5!important;
	color:#ddd!important;
}
.tabs ul li.ui-state-active.ui-tabs-active a:hover,
.tabs ul li.ui-state-active.ui-tabs-active span:hover
{
	color:#fff!important;
}
.tabs ul li .fa-times-circle{
position: absolute;
top: 10px;
right:18px;
}

  default.js

$(function(){
			var tabs = $( "#tabs3" ).tabs();
					   var tabTemplate = "<li><a href='#{href}'>#{label}</a> <span class='fa fa-times-circle'></span></li>";
				$('.menu li').click(function(){
					   //获取tabs下a[href]的值
                        var id="#tabs-"+this.id;
                        //tabs初始化时就有一个li,所以要减1,添加时index会返回-1,再减1变为-2,可根据实际情况而定。这里实际上是通过Id定位#id所在li的位置,然后设置active
                        var index=$("#tabs3").find(id).index()-1;
                         $( "#tabs3" ).tabs('option','active',index);
                          if(index==-2){
                             addTab(this.innerText,this.id);
                          }
					    
				});
				
				function addTab(tabTitle,id) {
				        var label = tabTitle,
				            id = "tabs-" + id,
				            li = $( tabTemplate.replace( /#\{href\}/g, "#" + id ).replace( /#\{label\}/g, label ) );
				           var tabContentHtml = $("."+id).html();
				            var existing=tabs.find("[id='"+id+"']");
				            if(existing.length==0){
				            	 tabs.find( ".ui-tabs-nav" ).append( li );
						        tabs.append( "<div id='" + id + "'><p>" + tabContentHtml + "</p></div>" );
						        tabs.tabs( "refresh" );
				            }
				            
				          var index=tabs.find('.ui-tabs-nav li').index(existing);
                          //添加时总是返回-1
				          tabs.tabs('option','active',index);
				      
				  		  }
						// close icon: removing the tab on click
					    $( "#tabs3" ).on( "click",'span.fa-times-circle', function() {
					        var panelId = $( this ).closest( "li" ).remove().attr( "aria-controls" );
					        $( "#" + panelId ).remove();
					        tabs.tabs( "refresh" );
					    });
			
		})

  3、html片段

<h5>动态标签页</h5>
	<ul class="menu">
		<li id="menu1">
			<a href="#" >菜单1</a>
		</li>
		<li id="menu2">
			<a href="#">菜单2</a>
		</li>
		<li id="menu3">
			<a href="#">菜单3</a>
		</li>
	</ul>
	<div id="tabs3" class="tabs">
		<ul>
			<li>
				<a href="#tabs-4">主页xxxxx</a>
			</li>
			
		</ul>
		<div id="tabs-4">主页内容</div>
		
	</div>
	<div id="tab_content" style="display: none;">
		<div class="tabs-menu1">111</div>
		<div class="tabs-menu2">222</div>
		<div class="tabs-menu3">333</div>
	</div>

  

posted @ 2016-06-05 00:32  hzhh123  阅读(13953)  评论(1编辑  收藏  举报