views:

215

answers:

2
$(document).ready(function() {

 //Default Action
 $(".tab_content").hide(); //Hide all content
 $("ul.tabs li:first").addClass("active").show(); //Activate first tab
 $(".tab_content:first").show(); //Show first tab content

 //On Click Event
 $("ul.tabs li").click(function() {
  $("ul.tabs li").removeClass("active"); //Remove any "active" class
  $(this).addClass("active"); //Add "active" class to selected tab
  $(".tab_content").hide(); //Hide all tab content
  var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
  $(activeTab).fadeIn("slow"); //Fade in the active content
  return false;
 });

});

Works in everything but IE?

+1  A: 

You can do this to get consistent behavior:

var activeTab = $(this).find("a").get(0).hash;

IE likes to return not "#id" but instead it thinks you want: "http://site.com/currentPage.html#id", which won't work for a selector :) I you grab the .hash off the DOM element, you get just he #id portion consistently.

You can find a bit more discussion on why this happens in this question

Nick Craver
Ah, you mean it likes to resolve relative URIs right away?
SamB
A: 

$(this).find("a").attr("href") gets you the HREF of the target, not the target. Assuming you're putting the name of a DIV in the href in there that may be correct (I don't know what's in there).

Try alert($(this).find("a").href()) to see if you've got the right element, or just try .show() and see what happens.

Diodeus