2010-04-28 1 views
0
$(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; 
}); 

}); 

Работает во всем, кроме IE?jQuery fadeIn() не работает в IE

+0

вместо возврата false вы должны использовать preventDefault() – Samuel

+0

Хм. Я бы не ожидал, что что-либо, связанное с альфа-смешиванием, будет корректно работать в IE, но, возможно, это просто из-за того, насколько сильно он используется для поддержки PNG ... – SamB

ответ

1

Вы можете сделать это, чтобы получить последовательное поведение:

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

IE любит возвращаться не "#id", но вместо этого он думает, что вы хотите: "http://site.com/currentPage.html#id", который не будет работать на селекторе :) Я вам захватить .hash от элемента DOM, вы получаете только он #id часть последовательно.

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

+0

А, вы имеете в виду, что ему нравится сразу же разрешать относительные URI? – SamB

0

$(this).find("a").attr("href") получает вас HREF мишени, а не целевой. Предполагая, что вы помещаете имя DIV в href, что может быть правильным (я не знаю, что там там).

Попробуйте alert($(this).find("a").href()), чтобы узнать, есть ли у вас правильный элемент или просто нажмите .show() и посмотрите, что произойдет.