2011-07-21 10 views
0

.toggle-item-(number here).link(number here)に切り替えるのが好きです。最初はすべて.toggle-itemが閉じています。同時に1つのトグル項目のみを表示する必要があります。新しいトグルアイテムが開くたびに、他の開いたトグルアイテムが閉じるはずです。コードとjQueryトグルが機能しません

リンクはこちらです:http://jsfiddle.net/rAUqb/

なぜjQueryのコードは動作しませんか?

答えて

0

クリックしたときに、それは他の人を閉じてマークのコードを更新しました。

$(document).ready(function() { 
    $('[class^=toggle-item]').hide(); 
    $('[class^=link]').click(function() { 
     var $this = $(this); 
     var x = $this.attr("class"); 
     var className = '.toggle-item-' + x.replace('link', ''); 
     $(className).toggle(); 
     $('[class^=toggle-item]:not('+className +')').hide(); 
     return false; 
    }); 
}); 
+0

これほど複雑である必要はありません。私の更新されたコードを見てください。 – Marc

+0

それほど複雑ではありません。あなたの更新されたコードは同じアイテムを複数回クリックすると切り替えません。また、アイテムを表示してもアイテムを隠すことはありません – Contra

+0

ありがとうございます - MarcとContra - あなたはどちらも解決に貢献しました – rabea

1

コードを更新しました。

番号を正しく取得できませんでした。

$(document).ready(function() { 
    $('[class^=toggle-item]').hide(); 
    $('[class^=link]').click(function() { 
     var x = $(this).attr("class").replace('link', ''); 
     $('[class^=toggle-item]:not(.toggle-item-'+x+')').hide(); 
     $('.toggle-item-' + x).toggle(); 
     return false; 
    }); 
}); 

xの値は完全なクラス名( "リンク1"、 "リンク2"、など)でした。私は単純に番号を持つために "リンク"部分を取り除いた。

+0

ありがとうございますが、このコードは既に開いているトグルアイテムを閉じませんでした - そのアイデアはありますか? – rabea

+0

うん、ちょうど余分なコード行。更新しました。 – Marc

+0

このコードは壊れています。私のコメント – Contra

0

Jquery accordionはお役に立てますか?

+0

いいえ、最初は.toggle項目は開かないでください。 – rabea

+0

'collapsible'オプションをチェックしてください。これにより、すべてのセクションを一度に閉じることができます。それがあなたのために働くことができれば、ホイールを再発明しようとするよりはるかに良い。 – Jay

0

使用attr("class")の代わりattr("classname")

関連する問題