私は、このマークアップを持っている:選択する複数のdiv要素を個別に
順不同リストの内容は、「H3」をクリックしたときにドロップダウンしても、ベースのスタイルを作成するようにh3はするクラスを追加することになっている<h3 id="btn-1">Content Title</h3>
<ul><li>Some Content</li></ul>
...stuff here and further down the page...
<h3 id="btn-2">Content Title 2</h3>
<ul><li>Some content 22</li></ul>
開閉状態である。私は、コードを書くためのより効率的な方法を探していました
$("#btn-1, #btn-2").attr('class','inactive');
$("#btn-1").click(function(){
if ($("#btn-1 + ul").is(":hidden")) {
$("#btn-1 + ul").slideDown("slow"),$("#btn-1").attr('class','active');
} else {
$("#btn-1 + ul").slideUp('slow'),$("#btn-1").attr('class','inactive');
}
});
$("#btn-2").click(function(){
if ($("#btn-2 + ul").is(":hidden")) {
$("#btn-2 + ul").slideDown("slow"),$("#btn-2").attr('class','active');
} else {
$("#btn-2 + ul").slideUp('slow'),$("#btn-2").attr('class','inactive');
}
});
と私はこの思い付いたが、それは同時にすべてのコンテナにアニメーションを適用します。だから私が望むように私は作業している、これを持っています。
$("h3[id^='btn-']").attr('class','inactive');
$("h3[id^='btn-']").click(function (index){
if ($("h3[id^='btn-'] + ul").is(":hidden")) {
$("h3[id^='btn-'] + ul").slideDown("slow"),$("h3[id^='btn-']").attr('class','active');
} else {
$("h3[id^='btn-'] + ul").slideUp('slow'),$("h3[id^='btn-']").attr('class','inactive');
}
});
私の質問は、最初の作業ソリューションでコードを減らすためのより良い方法はありますか?おかげさまで あなたのクリックハンドラ内
を私はあなた 'toggleClass'が、彼はクラスが' active'または 'inactive'になりたいと思って編集しました。 –
@Rocket良いキャッチ、感謝します。 – Jasper
私はあなたと今日読んで、あなたの優れた証拠のための答えで:-P –