/******************************* * @author mr.think * @author blog http://mrthink.net/ * @2011.02.20 * @可自由转载及使用,但请注明版权归属 *******************************/ (function($){ $.fn.wit_settab=function(iset){ /* * 多功能选项卡@mr.think * nav: 导航钩子; * field:切换区域 * k:初始化索引; * curcls:高亮样式; * auto:是否自动切换; * autotime:自动切换时间; * outtime:淡入时间; * intime:淡出时间; * crosstime:鼠标无意识划过时间 * ajax:是否开启ajax * ajaxfun:开启ajax后执行的函数 */ iset=$.extend({nav:null,field:null,k:0,curcls:'cur',auto:false,autotime:4000,outtime:100,intime:150,crosstime:60},iset||{}); var acrossfun=null,hascls=false,autoslide=null; //切换函数 function changefun(n){ iset.field.filter(':visible').fadeout(iset.outtime, function(){ iset.field.eq(n).fadein(iset.intime).siblings().hide(); }); iset.nav.eq(n).addclass(iset.curcls).siblings().removeclass(iset.curcls); } //初始高亮第一个 changefun(iset.k); //鼠标事件 iset.nav.hover(function(){ iset.k=iset.nav.index(this); if(iset.auto){ clearinterval(autoslide); } hascls = $(this).hasclass(iset.curcls); //避免无意识划过时触发 acrossfun=settimeout(function(){ //避免当前高亮时划入再次触发 if(!hascls){ changefun(iset.k); } },iset.crosstime); },function(){ cleartimeout(acrossfun); //ajax调用 if(iset.ajax){ iset.ajaxfun(); } if(iset.auto){ //自动切换 autoslide = setinterval(function(){ iset.k++; changefun(iset.k); if (iset.k == iset.field.size()) { changefun(0); iset.k=0; } }, iset.autotime) } }).eq(0).trigger('mouseleave'); } })(jquery);