今天我這邊網速真是太慢了打開一個網頁要等待很久但是還是想寫篇文章tab自動切換 因為工作中經常會碰到這樣的問題 所以寫博客也是總結下 最重要的是能分享下 及以後碰到類似的可以參考下! 當然這是我用Jquery來封裝的 頁面可以調用多次 調用方式 new tabSlider(objcount); obj指容器最外層IDcount指有多個li 當然要引用我這個js的話 一定要按照我結構來寫!下面的是我的HTML一些結構如下
復制代碼 代碼如下:
<div id="tab
">
<ul class="menu">
<li class="current">tab
</li>
<li>tab
</li>
<li>tab
</li>
<li class="last
col">tab
</li>
</ul>
<div class="content
main">
<div class="content">tab
</div>
<div class="content hide">tab
</div>
<div class="content hide">tab
</div>
<div class="content hide">tab
</div>
</div>
</div>
結構是這樣的!下面是我頁面上的HTML/CSS的代碼!
復制代碼 代碼如下:
<meta http
equiv="Content
Type" content="text/html; charset=utf
" />
<title>無標題文檔</title>
<script type="text/javascript" src="
<style>
#tab
{ width:
px; height:
px; overflow:hidden; border:
px solid #
;}
#tab
{ width:
px; height:
px; overflow:hidden; border:
px solid #
;}
menu{ width:
px; height:
px; margin:
; padding:
;}
menu li{ float:left; list
style:none; width:
px; text
align:center; border
bottom:
px solid #
; border
right:
px solid #
; cursor:pointer;}
menu li
current{ border
bottom:none;}
content
main{ width:
px; height:
px; overflow:hidden;}
content{ width:
px; height:
px; overflow:hidden; display:block;}
hide{ display:none;width:
px; height:
px; overflow:hidden;}
menu li
last
col{ border
right:none; width:
px;}
</style>
<script src="AutoTab
js"></script>
</head>
<body>
<div id="tab
">
<ul class="menu">
<li class="current">tab
</li>
<li>tab
</li>
<li>tab
</li>
<li class="last
col">tab
</li>
</ul>
<div class="content
main">
<div class="content">tab
</div>
<div class="hide">tab
</div>
<div class="hide">tab
</div>
<div class="hide">tab
</div>
</div>
</div>
<br /><br />
<div id="tab
">
<ul class="menu">
<li class="current">tab
</li>
<li>tab
</li>
<li>tab
</li>
<li class="last
col">tab
</li>
</ul>
<div class="content
main">
<div class="content">tab
</div>
<div class="hide">tab
</div>
<div class="hide">tab
</div>
<div class="hide">tab
</div>
</div>
</div>
<script>new tabSlider("#tab
"
);</script>
<script>new tabSlider("#tab
"
);</script>
</body>
</html>
JS代碼如下
復制代碼 代碼如下:
// JavaScript Document
/*
*@date
*@ author tugenhua
*@ email tugenhua@
com
*@ 可以一個頁面多次引用
依賴的結構 */
<div id="tab
">
<ul class="menu">
<li class="current">tab
</li>
<li>tab
</li>
<li>tab
</li>
<li class="last
col">tab
</li>
</ul>
<div class="content
main">
<div class="content">tab
</div>
<div class="content hide">tab
</div>
<div class="content hide">tab
</div>
<div class="content hide">tab
</div>
</div>
</div>
/*頁面引用的方式
new tabSlider("#tab
"
);
#tab
是外部ID
指 一共有多少個li
*/
function tabSlider(obj
count){
var _this = this;
_this
obj = obj;
_this
count = count;
_this
time =
;//停留的時間
_this
n =
;
var t;
this
slider = function(){
$(_this
obj + "
menu li")
bind("mouseover"
function(event){
$(event
target)
addClass("current")
siblings()
removeClass("current");
var index = $(_this
obj + "
menu li")
index(this);
$(_this
obj + "
content
main
content")
eq(index)
show()
siblings()
hide();
_this
n = index;
})
}
this
addhover = function(){
$(_this
obj)
hover(function(){clearInterval(t);}
function(){t=setInterval(_this
autoplay
_this
time)});
}
this
autoplay = function(){
_this
n = _this
n >=(_this
count
)?
: ++_this
n;
$(_this
obj + "
menu li")
eq(_this
n)
trigger("mouseover");
}
this
factory = function(){
this
slider();
this
addhover();
t = setInterval(this
autoplay
_this
time);
}
this
factory();
}
下面來說說下我封裝這個js的思路因為寫任何程序 思路是最重要的只要能想的清楚 代碼就一定能實現掉!思路說的更好聽的話 就是我們常說的“算法”!
function tabSlider(objcount){} 用這個js來封裝後傳入參數!當在HTML頁面上時直接調用tabSlider(objcount)就可以了!
初始化一些參數 然後給這個函數自生自定義一個函數thisslider = function(){} 綁定個mouseover事件初始化第一個li時 查找當前的div內容是否和當前li 指向同一個指針 如果相同 那塊內容顯示!其他的隱藏!
自定義thisaddHover這個事件 當鼠標移上時候抽發這個事件!
自定義自動播放事件thisautoplay = function(){} 這個裡面用了trigger這個觸發方法_thisn = _thisn >=(_thiscount)? : ++_thisn;
$(_thisobj + " menu li")eq(_thisn)trigger("mouseover");
最後用個函數 來渲染上面的函數 調用上面的函數
復制代碼 代碼如下:
thisfactory = function(){
thisslider();
thisaddhover();
t = setInterval(thisautoplay_thistime);
}
thisfactory();
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19807.html