2012-05-07 53 views
0

我正在使用jQuery在頁面中顯示和隱藏部分。該方法適用於Chrome,FF和Safari,但在IE8和7中可以使用。試圖使用動畫,淡入淡出和不透明。在IE中似乎沒有任何工作。根據IE Developer Tools的js控制檯,所選元素有一個'active'類,但是當我在Dev Tools html窗口中查看dom樹時, 活動'類尚未被刪除或重寫到DOM 。無法在IE8及以下版本中使用jQuery添加/刪除類

的Mark-了

<nav> 
<ul> 
<li id="foo">Show Section 1</li> 
<li id="bar">Show Section 2</li> 
</ul> 
</nav> 

<div id="items"> 
<section class="foo">Content Section 1</section> 
<section class="bar">Content Section 2</section> 
</div> 

的CSS

#items > section {display: none;} 
.active {display: block;} 

的JS

$('nav li').click(function(){ 
    var $me = $(this); 
showSection($me.attr('id')); 
}); 

showSection function(whichSection){ 
    $('#items > section').removeClass('active');  
    $('#items > '+'.'+whichSection).addClass('active'); 
} 

任何意見是極大的讚賞。我正處於一個討厭的期限。乾杯。

+5

您可能需要包含html5shiv(或Modernizr)才能讓IE8識別HTML5標記。 – Adam

+0

您的HTML驗證?另請參閱Adam的評論。 – Sparky

+0

我看不出你的例子在任何地方工作。 – j08691

回答

2

你有你的id和類混在一起。

$('nav li').click(function(){ 
    var $me = $(this); 
    showSection($me.attr('id')); 
}); 

showSection function(whichSection){ 
    $('#items > section').removeClass('active');  
    $('#items > #' + whichSection).addClass('active'); 
} 
+0

謝謝尼克,我剛剛發現了這一點。我應該爲這個示例代碼做一個小提琴。我急於嘗試獲得一些反饋。謝謝您的幫助。原來的問題仍然存在,所以如果你有什麼可能發生的想法,特別是在IE中,請讓我知道。 –

1

你的函數聲明是錯誤的:

function showSection (whichSection){ 
     $('#items > section').removeClass('active');  
     $('#items > #' + whichSection).addClass('active'); 
    } 

或者

var showSection = function(whichSection){ 
     $('#items > section').removeClass('active');  
     $('#items > #' + whichSection).addClass('active'); 
    } 

注:IE不瞭解section所以你可以使用html5shiv/Modernizr。找出HTML5標籤。

+0

謝謝。編寫示例代碼我做得很差。在真正的版本中,函數是一個對象方法。 –