一.前言
把JQuery某个功能封装成插件是为了能更方便的重用,提供效率。
二.效果
支持IE6和最新的chrome浏览器。
三.插件代码
jquery.tab.js
(function($) {
//2010-11-26
$.fn.extend({
//Tab插件名称
XQHTab: function(options) {
//默认值
var defaults = {
tabSelected: "tab_selected",
tabWidth: "100%",
autoHeight: "true"
};
var options = $.extend(defaults, options);
$(this).css("width", options.tabWidth);
//选项卡 this指通过当前选择器获取的JQuery对象
var tab = $(".tab_menu ul li", this);
//选项内容
var tabContent = $(".tab_box > div", this);
if (options.autoHeight != "true") {
tabContent.css("height", options.autoHeight);
}
//单击选项卡
tab.click(function() {
$(this).addClass(options.tabSelected).siblings().removeClass(options.tabSelected);
var curIndex = tab.index(this);
tabContent.eq(curIndex).show().siblings().hide();
});
//return this使JQuery方法可链
return this;
}
});
})(jQuery);
关键代码都加注释了,应该不难理解。
四.css代码
jquery.tab.css
.tab{ width:98%;}
.tab_menu ul{ width:98%; list-style:none;}
.tab_menu li{ list-style:none; float:left; margin-right:4px; display:block; border-right:#4488BB solid 1px;border-left:#4488BB solid 1px; border-top:#4488BB solid 1px; cursor:pointer; color:#000; height:20px; width:auto; padding:5px;}
.tab_box{ border:solid #4488BB 1px; padding:4px; height:auto; width:98%; float:left;}
.tab_selected{ background:#4488BB;}
.tab_displayNone{ display:none;}
li{ background:#EEEEEE; list-style:none;}
五.插件使用方法
代码
<script type="text/javascript">
$(function() {
$(".tab").XQHTab();
});
</script>
<div class="tab">
<div class="tab_menu">
<ul>
<li class="tab_selected">JQuery</li>
<li>ExtJs</li>
<li>Sliverlight</li>
</ul>
</div>
<div class="tab_box">
<div>Hello JQuery!</div>
<div class="tab_displayNone">Hello ExtJs!</div>
<div class="tab_displayNone">Hello Sliverlight!</div>
</div>
</div>
可以通过设置autoHeight属性来控制内容的高度默认为true自动适应高低,tabWidth来控制tab的宽度,默认为100%
六.总结
由于以前用户几乎清一色的用IE6,或者用Ext或Sliverlight开发,使得对浏览器兼容方面几乎不懂。经过这次自己写插件在IE6和chorme上的测试,刚开始在IE6上都正确显示,但跑到chrome上样式就走样了。经过查询,原来是浮动的关系。