2012-01-25 7 views
2

私は2つ以上の順序付けられていないリストを持っています。jqueryの表示リストの項目

最初のリストitmeをクリックすると、下の他のすべてのliが表示され、別のulに開いている他のliも非表示になります。

正しく表示されないようです。

クラス名は、コアコードの内部に深く生成され、他の要素で使用されているため、私が持っている例から変更することはできません。

ありがとうございました。

http://jsfiddle.net/ukkpower/En7KV/4/

+0

*何をすべきですか? –

+0

*表示する必要があります* – dfsq

+0

申し訳ありませんが、表示する必要があります " –

答えて

3

これを試してみてください:

$('ul').on('click','.maincat', 
      function(e){ 
       // prevents the default click action of the a element 
       e.preventDefault(); 

       // finds the sibling elements, and shows them if hidden, 
       // hides them if visible 
       $(this).siblings().toggle(); 

       // finds the closest ul ancestor of the clicked element 
       // finds the other ul siblings of that ancestor-ul 
       // finds the '.maincat' class element's siblings that are visible 
       // hides those visible elements 
       $(this) 
       .closest('ul') 
       .siblings('ul') 
       .find('.maincat') 
       .siblings('li:visible') 
       .hide(); 
      }); 

JS Fiddle demoを。


参照(下記)とこのノートを追加するを編集

はjQueryの1.7のように、live()方法のような、非推奨(とされる、ということに注意してくださいし、サポートをしたり、より多くのおそらくになります)。 jQuery 1.7+の場合、on()メソッド(下記参照)を使用し、1.7より前にはdelegate()メソッドを使用することをお勧めします。

live()のAPIドキュメントを参照してください(参考資料を参照)。

+0

ありがとうございます、デイビッド、それを行うことはできませんでした。私は新しいことを学びました。 –

+0

あなたは大歓迎です。受諾のためにあなたに*ありがとう! =) –

+0

リファレンスを追加する答えを編集し、 'live()'の代わりに 'on()'を使うことについての注意を書きました。 –

関連する問題