2011-12-02 11 views
0

残念ながら、別のブラウザを使用する選択肢はありません。jQuery .is()in Internet Explorer 7

私はいくつかのHTMLに対して以下のコードを実行しています。問題は、私が思うに、4行目です。Internet Explorer 7は、 "yellowOne"というid(または他の行)の行をクリックすると、何もしません。私が.is('tr.grayheading')を取った場合、IEはyellowXクラスですべての行を開きます。しかし、私はそのyellowXクラスとgrayheadingクラスの両方を持つものだけが必要です。

function showTheGray($yellowSection) { 
    $theYellowClass = 'yellow' + $yellowSection; 
    if ($($theYellowClass).is(':hidden')) {  
     $($theYellowClass).is('tr.grayheading').show('normal');  
    } else { $($theYellowClass).hide('normal'); } 
} 

$(document).ready( function() {  
    $('tr#yellowHeadOne').click(  
     function($e) {   
      showTheGray('One');  
     }  
    );  
    $('tr#yellowHeadTwo').click(  
     function($e) {   
      showTheGray('Two');  
     }  
    );  
    $('tr#yellowHeadThree').click(  
     function($e) {   
      showTheGray('Three');  
     }  
    ); 
}); 

IE7には複数のクラスに要素が割り当てられていますか?つまり、class="yellowOne grayheading" セレクタを間違って書きましたか?

IE7は.is()と似ていませんか? ($($theYellowClass).is(':hidden').show('normal')行がエラーを投げたので、私はifブロックに切り替えるので質問します)

答えて

0

あなたはいくつかの他の問題のメイトを持っています。黄色のセレクタが正しくありません。ベストプラクティスの準備が整ったら、このコードを試して、showthegrey関数を置いてください。一般に、$で始まる変数がある場合、それはjquery要素であることを意味します。私はあなたの変数名のいくつかを変更することは、何がより明確になっているかを見るのに役立つかもしれないと思います。また、関数のスコープ内で変数を宣言するには "var"を使用する必要があります。 HTMLを表示していないので、ページに影響を与えたい複数の「黄色い」要素があるのか​​、影響を受けたいのか明確ではありませんが、 1つ持っている。また、私はあなたが何をしようとしているのか分かりません。

また、IDを使用する場合、IDの前にtrなどのように絞り込む必要はありません。これは実際に選択を遅くするためです。 IDは一意であるため、ページ上の特定の要素に移動する必要はありません。

1つの要素に.is()が適用され、trueまたはfalseのみが返されることに注意してください。だからあなたのそれをtr:grayheadingに当てはめるだけではうまくいかないでしょう。その状況で探しているのは、関数find( 'yourSelector')です。これは、yourSelectorを満たすもの、またはhasClassを検索するものの中のすべての要素を選択します。

だから私はこれがあなたが何を望んでいるのかは分かりませんが、うまくいけばどこに変更を加える必要があるかを示すのに役立ちます。このコードは、例えばyellowHeadTwoをクリックすると、yellowTwoクラスの要素を選択し、それが隠されているかどうかを確認し、クラスがグレーヘッドであれば表示します。隠された

+0

これはまさに私が望んでいたものではありませんでしたが、コードを正しく取得するために必要なキーが私に与えられました。 私は最新のものをアップロードしていませんが、私のローカルコピーはうまくいっています。この行は、私が望むことをしました: '$($ theClass).filter( '。grayheading')フィルタ( ':hidden')show( 'normal');' –

+0

その行に基づいて – Evan

3

そのセミコロンはここに属しません。試してみてください、それを取り除く:

if ($($theYellowClass).is(':hidden;')) { 
           ^

その他のエラー:私はあなたが正しく何をしたいのか理解していれば

Failed to load resource: the server responded 
with a status of 500 (Internal Server Error) 

http://herbertlives.com/demos/table/jQuery.js 
+0

私はなぜそれがエラーをスローしなかったのだろうかと思います。 セミコロンを削除しましたが、それでも機能しません。 私の個人的なサイトは以下の通りです。http://herbertlives.com/demos/table/table.html –

+1

jQueryをロードしていません。上記の私のエラーを参照してください。 jQueryをダウンロードして、そのファイル名と一致するように名前を変更してください。 – Blender

+0

hrm ...以前は動作していました。それで、まだ動作していないファイル名の大文字と小文字を同期しました。 –

0

(アコーディオン状efffect):

function showTheGray($yellowSection){ 

if ($('.yellow'+$yellowSection).is(':hidden')) { 
    $('.yellow'+$yellowSection).show(); 
}else{ 
$('.yellow'+$yellowSection).hide(); 
} 
    } 

あなたはまた、どこかでエラーが発生していますあなたのHTML(それは関連していませんが)。

 ...class="blaahblah><p">&nbsp;</p> 
+0

また、「タイムライン」の表のヘッダーはIE8ではsiedways、青いヘッダーは巨大ですが、Mozillaではそれが問題なく表示されます(または、あなたが行っていたことに応じて、逆もあります)。 –

+0

タイムラインサブヘッダーは横向きです。 –

+0

htmlエラーを指摘してくれてありがとう。それはちょうど私がばかげていた。 –

関連する問題