最近研究jquery-ui-1.7.1的tabs的使用。之前都有用开ext的tabs的。由于觉得ext的库比较大,而且我不需要ext那么强大的库。我需要简单好用够用就可以了。jquery和它的ui库比较适合我的需求。但是jquery ui的tabs库从开始追踪到现在。tabs的控件都没带上自动关闭按钮。虽然新的api中有remove事件和方法。经过一番研究。经过tabs自身的一些api进行了定制,实现带有关闭按钮的tabs的控件。 思路大概如下: tabs的有一个属性tabTemplate是设置tab标签头的模板的。在模板中增加一个关闭按钮。然后在tabs的添加(add)的事件中增加该按钮的事件,在事件中关闭本tabs标签。
下边是两个sample测试文件,把文件复制到jquery-ui-1.7.1的示范目录中运行。 test.htm file
daozaho jQuery UI Example
<script type="text/javascript" src="js/jquery-ui-1.7.1.custom.min.js"></script>
<script type="text/javascript" src="test2.js"></script>
<style>
.tab-close{ position: relative ; float: left}
</style>
</head>
<body>
<div id="demoHeader">
<h1>Welcome to jQuery UI--Tabs(close by self).</h1>
<p>Author:daozhao. blog: <a href="http://daozhao.goflytodya.com">daozhao.goflytoday.com</a></p>
<a id="add" href="#">Add new tabs</a><br>
<div id="tabs">
<ul>
<li><a href="#tabs-1">aaaaaaaaa</a></li>
<li><a href="#tabs-2">bbbbb</a></li>
<li><a href="#tabs-3">ccccccccc</a></li>
</ul>
<div id="tabs-1">
aaaaaaaaaaaaaaaaaaaaa
</div>
<div id="tabs-2">
bbbbbbbbbbbbbbbbbbbbbbbbbbbbb
</div>
<div id="tabs-3">
cccccccccccccccccccccccccccc
</div>
</div>
</div>
</body>
6-7行的css文件和js文件根据自己的测试环境更改。
11行css代码是修正关闭按钮在firefox的显示效果的。ie和chrome浏览器有没有这个css都可以。test.js 文件。
$(function(){
tabid = 1;
tab = $('#tabs').tabs(
{add: function(event, ui) {
$(ui.tab.nextSibling).click(function(){
var li = $(this).parent();
var index = $('#tabs li').index(li.get(0));
if(confirm('Are you sure to close "' + li.text() + '" tab?'))
{
tab.tabs("remove",index );
}
else
{
return false;
}
return true;
});
}
,tabTemplate: '
第5行的$(ui.tab.nextSibling)代码是根据tabTemplate的html代码来定的,这个示范例子ui.tab.nextSibling就是代表关闭按钮。如果你的tabTemplate和我的不一样,就需要修改这个,但是不要修改成$(".tab-close"),这样的话有一个bug. 你不信,可以修改成下边的代码。
tab = $('#tabs').tabs(
{add: function(event, ui) {
$(".tab-close").click(function(){
var li = $(this).parent();
alert(li.text() + " close button is click");
return true;
});
}
,tabTemplate: '
你测试的时候,在网页上点击多几次增加按钮。然后点击每一个tab的关闭按钮。你就知道有什么bug了。
你会发现点击一次tab的关闭按钮,但是会出现几次的alert对话框。最早添加的tab会出现最多次数的alert对话框。最后添加的tab只会出现一次。