2009-09-17 168 views
2

我構建了一些簡單的選項卡,點擊後顯示一個隱藏的div。很簡單。除IE外,一切運作良好。出於某種原因,即使我使用jQuery .show()函數,它也不會將隱藏的div設置爲顯示:block,但只是將其隱藏起來,而且非常令人沮喪。IE不能使用jQuery .show()

例頁:http://www.puc.edu/alumni/give-puc

jQuery的用於選項卡:

$('#teamTabs li').click(function() { 
$('#teamTabs li').removeClass('selected'); 
$(this).addClass('selected'); 
$('.teamTab').hide(); 
var id = $(this).attr('id'); 
if (id == 'teamTab1') { 
    $('#team1').show(); 
} else if (id == 'teamTab2') { 
    $('#team2').show(); 
} else if (id == 'teamTab3') { 
    $('#team3').show(); 
} else if (id == 'teamTab4') { 
    $('#team4').show(); 
}//end else if 

return false; 

});//end click 

爲什麼IE不設置div來顯示任何想法:塊?

+0

什麼版本的IE?你需要支持哪些版本? –

+0

似乎可以在IE8中工作 – Greg

+0

IE7是什麼不適合我。 –

回答

2

我知道你已經想通了,問題是在其他地方,但對於其他人發現這個後(並獲得這一關了沒有答案列表),你可以瘦下來/簡化代碼相當多:

$('#teamTabs li').click(function() { 
    $(this).addClass('selected').siblings().removeClass('selected'); 
    $('.teamTab').hide(); 
    $('#team'+ this.id.replace('teamTab','')).show(); 
    return false; 
}); 
2

我有一個類似的問題。我發現,IE瀏覽器實際上正在改變顯示阻攔,但它也使每個display:none;塊具有visibility:hidden;

我能夠做正確的讓我的元素顯示如下:

$('#team1').show(); // shows for all browsers but IE 
if($.browser.msie){ 
    $('#team1').css({"visibility":"visible"}); 
} 

我發現這個由在將我的問題縮小到可能隱藏我的HTML的兩個可能的CSS元素之後使用兩個警報:display:none;和可見性:隱藏。

保證,如果你以後$('#team1').show();

alert($('#team1').css("display"));您的顯示器做到這一點警惕權將是塊 警報($( '#TEAM1')的CSS( 「可見性」)。);您的知名度將被隱藏。

似乎像IE自動隱藏塊,當他們被設置爲在CSS顯示「無」,然後通過JQuery更改。它也好像這對於定義爲display:block的元素不是問題;只要您在CSS中首先定義了這些元素,就應該始終保持正常。

希望這可以幫助任何人有這個問題:)

+0

謝謝!這幫了我很多 –

+0

很高興幫助! – Ian