From f31daea6274394e7c56fcbe0dd725ae48f60466c Mon Sep 17 00:00:00 2001 From: Mauvis Ledford Date: Sun, 31 Jul 2011 12:36:20 -0700 Subject: [PATCH] Tab JS optimizations: - Use jQuery.live so that even if tabs are ajaxed in they still work. - Don't use DOM ready since this JS file is already at the bottom of the page. - Remove selected class only on sibling tabs. - Don't add a selected class on selected tab if it's already there (avoid hits to the DOM). - Avoid using $(this) a lot, and instead use a saved reference, as you're creating a new jQuery object each time. - Use '$' in front of jQuery variables so that you know they are jQuery objects. --- javascripts/app.js | 47 +++++++++++++++++++--------------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/javascripts/app.js b/javascripts/app.js index 9a6a087..008b0ea 100644 --- a/javascripts/app.js +++ b/javascripts/app.js @@ -7,36 +7,27 @@ * 7/17/2011 */ +/* Tabs Activiation +================================================= */ +$('ul.tabs > li').live('click', function(e) { + var $tab = $(this); + var $href = $tab.find('a:first'); + var $otherHrefs = $tab.siblings().find('a'); + var contentLocation = $href.attr('href') + "Tab"; -$(document).ready(function() { + //Let go if not a hashed one + if(contentLocation[0]=="#") { + e.preventDefault(); + $otherHrefs.removeClass('active'); - /* Tabs Activiation - ================================================== */ - var tabs = $('ul.tabs'); - - tabs.each(function(i) { - //Get all tabs - var tab = $(this).find('> li > a'); - tab.click(function(e) { - - //Get Location of tab's content - var contentLocation = $(this).attr('href') + "Tab"; - - //Let go if not a hashed one - if(contentLocation.charAt(0)=="#") { - - e.preventDefault(); - - //Make Tab Active - tab.removeClass('active'); - $(this).addClass('active'); - - //Show Tab Content & add active class - $(contentLocation).show().addClass('active').siblings().hide().removeClass('active'); - - } - }); - }); + //Make Tab Active + if (!$href.hasClass('active')){ + $href.addClass('active'); + } + //Show Tab Content & add active class + $(contentLocation).show().addClass('active').siblings().hide().removeClass('active'); + } }); +