2012-05-07 9 views
0

jQueryを使用してページ内のセクションを表示および非表示にしています。このアプローチはChrome、FF、Safariで機能しますが、IE8と7では機能しません。アニメーション、フェード、不透明度を試してみましょう。何もIEで動作するようです。 IE Developer Toolsのjsコンソールによれば、選択された要素には「アクティブ」というクラスがありますが、Dev Toolsのhtmlウィンドウのdomツリーを見ると、 アクティブなクラスは削除されていないか、DOMに書き直されていません。IE8以下でjQueryでクラスを追加/削除できません

マークアップ

<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

IE8でHTML5タグを認識させるには、html5shiv(またはModernizr)を含める必要があります。 – Adam

+0

あなたのHTMLは検証されますか?また、アダムのコメントを参照してください。 – 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で何が起こっているのかについてのアイデアがあれば教えてください。 –

0

IE8以下は、あなたが知っているタグをそれを強制しない限り、あなたはhtml5shiv JSライブラリを使用することができますsectionタグを理解していません。

http://code.google.com/p/html5shiv

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

ありがとうございます。私はサンプルコードを書くのが本当に苦労しました。実際のバージョンでは、関数はオブジェクトメソッドです。 –

関連する問題