2011-09-16 5 views
0

子要素を隠すために同じdtを2回クリックしなければならないので、どのようにして他のdtがクリックされると隠すようにすることができます。 ありがとうございます。jQuery xhtml dd dl dt

<script type="text/javascript"> 
$(document).ready(function() { 
     $('#faq').find('dd').hide().end().find('dt').click(function() { 
      $(this).next().slideToggle(); 
     }); 
    }); 
</script> 

<dl id="faq"> 
    <dt>Question 1?</dt> 
    <dd> 
     Weee look at me I can type!!! 
    </dd> 

    <dt>Question 2?</dt> 
    <dd> 
     Weee look at me I can type too!!! 
    </dd> 
</dl> 

答えて

2

私はあなたが唯一のddが一度に表示したいと仮定して、このコードを投稿するつもりです:dd要素であり、次の要素、ダウン

$(document).ready(function() { 
    $('#faq').find('dd').hide().end().find('dt').click(function() { 
     $(this).next().slideDown(); 
     $(this).siblings('dd').not($(this).next()).slideUp(); 
    }); 
}); 
  • $(this).next().slideDown();スライドそれをにスライドさせます。
  • $(this).siblings('dd').not($(this).next()).slideUp();スライドup他のすべてdd要素(.not($(this).next())ビット)。

.siblings().not()と一緒にお探しのものがあります。

Demonstration JSFiddle here

+0

ですありがとう、あなたは素晴らしいです。 –

+0

私はほとんど同じコードO_oを持っていましたhttp://jsfiddle.net/baEUm/ slideDownの代わりにslideToggleを使用します(oops ...ほとんど忘れました... +1 XD) –

+0

@Joseph '.slideToggle ) '、' .slideUp() 'と' .slideDown() 'を使った理由は、' .slideToggle() 'を現実的ではないものにしています。 – Bojangles

2

Here's a jsfiddleあなたのコードです。

あなたはそれが「子」ddだ切り替えることdtをクリックすることができますが、それの音で、あなたはどのdtがクリックされたときにすべての可視dd Sを非表示にします。

現在のdd.not()ているすべてのdtの要素をトグルすることによってこれを行うことができます。

$('#faq').find('dd').hide().end().find('dt').click(function() { 
    $('#faq').find('dd:visible').not($(this).next()).slideToggle(); 
    $(this).next().slideToggle(); 
}); 

updated jsfiddleをチェックしてください。

hereと表示されているように、clickコールバックの1行目と2行目を組み合わせることで、コードをさらにコンパクトにまとめることができます。

+0

OPは兄弟要素を意味しました。つまり、要素は_inside it_ではなく、クリックされた要素の次の要素です。ちょうど物事をクリアしたい。 – Bojangles

+0

それゆえ、子供の周りの引用符。 'dt'要素と' dd'要素の間の接続を作成するだけです。しかし、かなり正しい、混乱を引き起こす可能性があります。 – Alex

0
$(function() { 
$('#faq').find('dd:last-child').hide().end().find('dt').click(function() { 
    $(this).next().slideDown(); 
    $(this).siblings('dd').not($(this).next()).slideUp(); 
}); 

Iだけを追加(最後:子)クラスの疑似、私は一つだけが

ありがとう

を表示するために必要なので、私のコードは私に頭痛を与え、あなたは非常に読みやすい:-D

関連する問題