(function($){ $.fn.extend({ "sochange": function(o){ o= $.extend({ thumbobj:null,//导航对象 botprev:null,//按钮上一个 botnext:null,//按钮下一个 changetype:'fade',//切换方式,可选:fade,slide,默认为fade thumbnowclass:'now',//导航对象当前的class,默认为now thumboverevent:true,//鼠标经过thumbobj时是否切换对象,默认为true,为false时,只有鼠标点击thumbobj才切换对象 slidetime:1000,//平滑过渡时间,默认为1000ms,为0或负值时,忽略changetype方式,切换效果为直接显示隐藏 autochange:true,//是否自动切换,默认为true clickfalse:true,//导航对象如果有链接,点击是否链接无效,即是否返回return false,默认是return false链接无效,当thumboverevent为false时,此项必须为true,否则鼠标点击事件冲突 overstop:true,//鼠标经过切换对象时,切换对象是否停止切换,并于鼠标离开后重启自动切换,前提是已开启自动切换 changetime:5000,//自动切换时间 delaytime:300//鼠标经过时对象切换迟滞时间,推荐值为300ms }, o || {}); var _self = $(this); var thumbobj; var size = _self.size(); var nowindex =0; //定义全局指针 var index;//定义全局指针 var startrun;//预定义自动运行参数 var delayrun;//预定义延迟运行参数 //主切换函数 function fadeab () { if (nowindex != index) { if (o.thumbobj!=null) { $(o.thumbobj).removeclass(o.thumbnowclass).eq(index).addclass(o.thumbnowclass);} if (o.slidetime <= 0) { _self.eq(nowindex).hide(); _self.eq(index).show(); }else if(o.changetype=='fade'){ _self.eq(nowindex).fadeout(o.slidetime); _self.eq(index).fadein(o.slidetime); }else{ _self.eq(nowindex).slideup(o.slidetime); _self.eq(index).slidedown(o.slidetime); } nowindex = index; if (o.autochange==true) { clearinterval(startrun);//重置自动切换函数 startrun = setinterval(runnext,o.changetime);} } } //切换到下一个 function runnext() { index = (nowindex+1)%size; fadeab(); } //初始化 _self.hide().eq(0).show(); //点击任一图片 if (o.thumbobj!=null) { thumbobj = $(o.thumbobj); //初始化thumbobj thumbobj.removeclass(o.thumbnowclass).eq(0).addclass(o.thumbnowclass); thumbobj.click(function () { index = thumbobj.index($(this)); fadeab(); if (o.clickfalse == true) { return false; } }); if (o.thumboverevent == true) { thumbobj.mouseenter(function () { index = thumbobj.index($(this)); delayrun = settimeout(fadeab,o.delaytime); }); thumbobj.mouseleave(function () { cleartimeout(delayrun); }); } } //点击上一个 if (o.botnext!=null) { $(o.botnext).click(function () { if(_self.queue().length<1){ runnext();} return false; }); } //点击下一个 if (o.botprev!=null) { $(o.botprev).click(function () { if(_self.queue().length<1){ index = (nowindex+size-1)%size; fadeab();} return false; }); } //自动运行 if (o.autochange==true) { startrun = setinterval(runnext,o.changetime); if (o.overstop == true) { _self.mouseenter(function () { clearinterval(startrun);//重置自动切换函数 }); _self.mouseleave(function () { startrun = setinterval(runnext,o.changetime); }); } } } }) })(jquery);