2009-08-24 13 views
0

私はクリックでそれを表示し、それを隠して、特定のテーブルを見つけるために、次のコードを使用します。ここではJquery IFおそらく?

$(function() { 
    $('.Nav table .navitem').hide(); 
    $('.Nav table.navheader').click(function() { 
    $(this).parent().parent().next().find(".navitem").slideToggle('100'); 
    }); 
}); 

は、HTML出力である:

<div class="Nav"> 

<table cellpadding="0" cellspacing="0" border="0"> 
    <tr> 
    <td> 
     <table class="navheader" cellpadding="0" cellspacing="0" border="0" width="100%"> 
     <tr> 
     <td style="width:100%;"><a navheader" href="#">Header</a></td> 
     </tr> 
     </table> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     <table border="0" cellpadding="0" cellspacing="0" width="100%" class="navSubMenu"> 
     <tr> 
     <td> 
     <table class="ms-navitem" cellpadding="0" cellspacing="0" border="0" width="100%"> 
      <tr> 
      <td style="width:100%;"><a class=" ms-navitem" href="#" style="border-style:none;font-size:1em;">Item</a></td> 
      </tr> 
     </table> 
     </td> 
     </tr> 
     </table> 

テーブルから一緒にハッキングの基本的なアコーディオンナビゲーションしかし、.havheaderには.navitemがないので、これらをクリック可能にしたくありません。

私はこれをどのように最高に達成できますか?

+0

側の注意点として、いくつかのナビゲーションリンクを作成するために、3レベルのテーブルネストを行うことは過度のことです。 Unordered List(UL)を使用して同じ効果を作成することができます。 – scunliffe

+0

HTMLが「あらかじめ生成され」ていて、編集がワームのまったく新しい缶を開くことを除いて、私は同意します。私は私が持っているものと仕事をしなければなりません。 – CLiown

+0

テーブルクラス= "ms-navitem"は "navitem"であるはずですか? MrHus

答えて

2

変更このセレクタ:これに

$('.Nav table.navheader') 

$('.Nav table.navheader:has(.navitem)') 
+0

あなたの提案はうまくいかないが、非常に近いと思われるので、私は自分の投稿をHTML出力を表示するように変更しました。 – CLiown

+0

.navitemが.navheaderの外にあり、table.navheaderに.navitemの要素がないため、これは機能しません。 .navitemは外部のテーブルです。 – CLiown

0

あなただけのアコーディオンをしたい場合は、多分代わりにjQueryのUIを使用することをお勧めします...

+0

これは可能でしたが、HTMLは変更できません。元の投稿の上記のコメントを参照してください。 – CLiown

関連する問題