var win = $(window), nav_on = null; $(function() { // banner 切换 (function() { var banner = $('#banner'), pic_c = banner.find('.pics'), pics = pic_c.children(), idx_c = banner.find('.idxs'), idxs = idx_c.children(), btns = banner.find('.btns a'), prev = btns.filter('.prev'), next = btns.filter('.next'), len = pics.length, idx = 0, prev_i = -1, max_i = len - 1, curr_p = pics.eq(idx), curr_i = idxs.eq(idx), delay = 7000, timeout = -1; win.on('load', function() { idx_recu(0, 1500/len, function() { settimeout(function() { curr_i.addclass('on'); auto(); }, 300); idxs.hover(hover); }); banner.hover(function() { // prev.stop().fadein(300); // next.stop().fadein(300); btns.addclass('on'); }, function() { btns.removeclass('on'); // prev.stop().fadeout(300); // next.stop().fadeout(300); }); prev.on('click', function() {fade(idx===0? idx=max_i:--idx)}); next.on('click', function() {fade(idx===max_i? idx=0:++idx)}); }); function fade(idx) { cleartimeout(timeout); prev_i = idx; curr_p.stop(false,true).fadeout(300); curr_p = pics.eq(idx).stop(false,true).fadein(300); curr_i.removeclass('on'); curr_i = idxs.eq(idx).addclass('on'); auto(); } function hover(){ idx = $(this).index(); if (idx === prev_i) return; fade(idx); } function idx_recu(idx, delay, func) { temp = idxs.eq(idx); if (temp.length) { temp.css('margin-top',0).fadein(500); settimeout(function() { idx_recu(idx+1, delay, func); }, delay); } else { func(); return; } } function auto() { timeout = settimeout(function() { fade(idx===max_i? idx=0: ++idx); }, delay); } }()); });