jquery(function($){ //创建dom var quickhtml = $('.quick_links_panel'), quickshell = $(document.createelement('div')).html(quickhtml).addclass('quick_links_wrap'), quicklinks = quickshell.find('.quick_links'); quickpanel = quicklinks.parent(); quickshell.appendto('body'); var prevpoptype, prevtrigger, doc = $(document), popdisplayed = false, hidequickpop = function(){ if(prevtrigger){ prevtrigger.removeclass('current'); } popdisplayed = false; prevpoptype = ''; quickpop.hide(); }, showquickpop = function(type){ if(quickpopxhr && quickpopxhr.abort){ quickpopxhr.abort(); } if(type !== prevpoptype){ var fn = quickdatafns[type]; quickpop.html(ds.tmpl(poptmpl, fn)); fn.init.call(this, fn); } doc.unbind('click.quick_links').one('click.quick_links', hidequickpop); quickpop[0].classname = 'quick_links_pop quick_' + type; popdisplayed = true; prevpoptype = type; quickpop.show(); }; quickshell.bind('click.quick_links', function(e){ e.stoppropagation(); }); //通用事件处理 var view = $(window), quicklinkcollapsed = !!ds.getcookie('ql_collapse'), gethandlertype = function(classname){ return classname.replace(/current/g, '').replace(/\s+/, ''); }, showpopfn = function(){ var type = gethandlertype(this.classname); if(popdisplayed && type === prevpoptype){ return hidequickpop(); } showquickpop(this.classname); if(prevtrigger){ prevtrigger.removeclass('current'); } prevtrigger = $(this).addclass('current'); }, quickhandlers = { //返回顶部 return_top: function(){ ds.scrollto(0, 0); hidereturntop(); }, toggle: function(){ quicklinkcollapsed = !quicklinkcollapsed; quickshell[quicklinkcollapsed ? 'addclass' : 'removeclass']('quick_links_min'); ds.setcookie('ql_collapse', quicklinkcollapsed ? '1' : '', 30); } }; quickshell.delegate('a', 'click', function(e){ var type = gethandlertype(this.classname); if(type && quickhandlers[type]){ quickhandlers[type].call(this); e.preventdefault(); } }); //return top var scrolltimer, resizetimer, minwidth = 1350; function resizehandler(){ cleartimeout(scrolltimer); scrolltimer = settimeout(checkscroll, 160); } function checkresize(){ quickshell[view.width() > 1340 ? 'removeclass' : 'addclass']('quick_links_dockright'); } function scrollhandler(){ cleartimeout(resizetimer); resizetimer = settimeout(checkresize, 160); } function checkscroll(){ view.scrolltop()>100 ? showreturntop() : hidereturntop(); } function showreturntop(){ quickpanel.addclass('quick_links_allow_gotop'); } function hidereturntop(){ quickpanel.removeclass('quick_links_allow_gotop'); } view.bind('scroll.go_top', resizehandler).bind('resize.quick_links', scrollhandler); quicklinkcollapsed && quickshell.addclass('quick_links_min'); resizehandler(); scrollhandler(); });