mirror of
https://github.com/JangoSteve/jQuery-EasyTabs.git
synced 2025-12-24 12:13:57 +01:00
12 lines
5.0 KiB
JavaScript
12 lines
5.0 KiB
JavaScript
/*
|
|
* jQuery EasyTabs plugin 2.0.2
|
|
*
|
|
* Copyright (c) 2010-2011 Steve Schwartz (JangoSteve)
|
|
*
|
|
* Dual licensed under the MIT and GPL licenses:
|
|
* http://www.opensource.org/licenses/mit-license.php
|
|
* http://www.gnu.org/licenses/gpl.html
|
|
*
|
|
* Date: Sat Jan 15 02:40:00 2011 -0500
|
|
*/(function(a){a.fn.easyTabs=function(){a.error("easyTabs() is no longer used. Now use easytabs() -- no capitalization.")};a.fn.easytabs=function(c){var b=arguments;return this.each(function(){var e=a(this),d=e.data("easytabs");if(!d){a.fn.easytabs.methods.init.apply(e,[c]);a.fn.easytabs.methods.initHashChange.apply(e);a.fn.easytabs.methods.initCycle.apply(e)}if(a.fn.easytabs.publicMethods[c]){return a.fn.easytabs.publicMethods[c].apply(e,Array.prototype.slice.call(b,1))}})};a.fn.easytabs.defaults={animate:true,panelActiveClass:"active",tabActiveClass:"active",defaultTab:"li:first-child",animationSpeed:"normal",tabs:"> ul > li",updateHash:true,cycle:false};a.fn.easytabs.methods={init:function(c){var g=this,f=a.extend({},a.fn.easytabs.defaults,c),b=g.find(f.tabs),e=a(),d,h;b.each(function(){targetId=a(this).children("a").attr("href").match(/#([^\?]+)/)[0].substr(1);$matchingPanel=g.find("div[id="+targetId+"]");if($matchingPanel.size()>0){e=e.add($matchingPanel.hide())}else{b=b.not(a(this))}});a("a.anchor").remove().prependTo("body");g.data("easytabs",{opts:f,skipUpdateToHash:false,tabs:b,panels:e});a.fn.easytabs.methods.setDefaultTab.apply(g);b.children("a").bind("click.easytabs",function(i){g.data("easytabs").opts.cycle=false;g.data("easytabs").skipUpdateToHash=false;$clicked=a(this);a.fn.easytabs.methods.selectTab.apply($clicked,[g]);i.preventDefault()})},loadFromData:function(){return this.data("easytabs")},setDefaultTab:function(){var j=this,g=a.fn.easytabs.methods.loadFromData.apply(j),b=g.opts,i=g.tabs,c=g.panels,f=window.location.hash.match(/^[^\?]*/)[0],h=i.find("a[href='"+f+"']").parent(),d,e;if(h.size()==1){d=h;j.data("easytabs").opts.cycle=false}else{d=i.parent().find(b.defaultTab);if(d.size()==0){a.error("The specified default tab ('"+b.defaultTab+"') could not be found in the tab set.")}}e=d.children("a").first();j.data("easytabs").defaultTab=d;j.data("easytabs").defaultTabLink=e;c.filter("#"+e.attr("href").match(/#([^\?]+)/)[0].substr(1)).show().addClass(b.panelActiveClass);d.addClass(b.tabActiveClass).children().addClass(b.tabActiveClass)},selectTab:function(n,m){var e=this,c=window.location,h=c.hash.match(/^[^\?]*/)[0],i=a.fn.easytabs.methods.loadFromData.apply(n),b=i.opts,f=i.skipUpdateToHash,k=i.tabs,d=i.panels,j=d.filter(e.attr("href").match(/#([^\?]+)/)[0]),g=i.defaultTabLink,l=(b.animate)?{show:"fadeIn",hide:"fadeOut",speed:b.animationSpeed}:{show:"show",hide:"hide",speed:0};if(!e.hasClass(b.tabActiveClass)||!j.hasClass(b.panelActiveClass)){d.stop(true,true);n.trigger("easytabs:before");k.filter("."+b.tabActiveClass).removeClass(b.tabActiveClass).children().removeClass(b.tabActiveClass);e.parent().addClass(b.tabActiveClass).children().addClass(b.tabActiveClass);d.filter("."+b.panelActiveClass).removeClass(b.panelActiveClass);j.addClass(b.panelActiveClass);d.filter(":visible")[l.hide](l.speed,function(){n.trigger("easytabs:midTransition");if(b.updateHash&&!f){window.location.hash=e.attr("href")}else{n.data("easytabs").skipUpdateToHash=false}j[l.show](l.speed,function(){n.data("easytabs").tabs=k;n.data("easytabs").panels=d;n.trigger("easytabs:after");if(typeof m=="function"){m()}})})}},selectTabFromHashChange:function(){var h=this,f=a.fn.easytabs.methods.loadFromData.apply(h),d=f.opts,b=f.tabs,c=f.defaultTab,i=f.defaultTabLink,g=window.location.hash.match(/^[^\?]*/)[0],e=b.find("a[href='"+g+"']");if(d.updateHash){if(e.size()>0){a.fn.easytabs.methods.selectTab.apply(e,[h])}else{if(g==""&&!c.hasClass(d.tabActiveClass)&&!d.cycle){h.data("easytabs").skipUpdateToHash=true;a.fn.easytabs.methods.selectTab.apply(i,[h])}}}},cycleTabs:function(c){var f=this,e=a.fn.easytabs.methods.loadFromData.apply(f),d=e.opts,b=e.tabs;if(d.cycle){c=c%b.size();$tab=a(b[c]).children("a").first();f.data("easytabs").skipUpdateToHash=true;a.fn.easytabs.methods.selectTab.apply($tab,[f,function(){setTimeout(function(){a.fn.easytabs.methods.cycleTabs.apply(f,[c+1])},d.cycle)}])}},initHashChange:function(){var b=this;if(typeof a(window).hashchange=="function"){a(window).hashchange(function(){a.fn.easytabs.methods.selectTabFromHashChange.apply(b)})}else{if(a.address&&typeof a.address.change=="function"){a.address.change(function(){a.fn.easytabs.methods.selectTabFromHashChange.apply(b)})}}},initCycle:function(){var g=this,f=a.fn.easytabs.methods.loadFromData.apply(g),e=f.opts,c=f.tabs,d=f.defaultTab,b;if(e.cycle){b=c.index(d);setTimeout(function(){a.fn.easytabs.methods.cycleTabs.apply(g,[b+1])},e.cycle)}}};a.fn.easytabs.publicMethods={select:function(c){var f=this,e=a.fn.easytabs.methods.loadFromData.apply(f),b=e.tabs,d;if((d=b.filter(c)).size()==0){if((d=b.find("a[href='"+c+"']")).size()==0){if((d=b.find("a"+c)).size()==0){a.error("Tab '"+c+"' does not exist in tab set")}}}else{d=d.children("a").first()}a.fn.easytabs.methods.selectTab.apply(d,[f])}}})(jQuery);
|