初心者です。初歩的な部分で詰まってます。お知恵をお貸し下さい。
jQueryでありがちなスライドメニューを作ってます。
ボタンを押すとコンテンツ表示/非表示という単純なもの。
これを実装したい箇所が複数ありまして、
最初は以下のように1つ1つ設定していました。
javascript
1$('#a_btn').click(function() { 2 if ($('#a_cont').css('display') === 'none') { 3 $('#a_cont').slideDown(); 4 } else { 5 $('#a_cont').slideUp(); 6 } 7}); 8$('#b_btn').click(function() { 9 if ($('#b_cont').css('display') === 'none') { 10 $('#b_cont').slideDown(); 11 } else { 12 $('#b_cont').slideUp(); 13 } 14}); 15
しかし、実装箇所があまりに多いため、
for文でまとめて設定しようと思いました。
javascript
1var list = []; 2list.push(['#a_btn','a_cont']); 3list.push(['#b_btn','b_cont']); 4/*----------------------------------------------*/ 5for (var i = 0; i < list.length; i++) { 6 $(list[i][0]).click(function() { 7 if ($(list[i][1]).css('display') === 'none') { 8 $(list[i][1]).slideDown(); 9 } else { 10 $(list[i][1]).slideUp(); 11 } 12 }); 13}
これでは関数の中身が動作しませんでした。
原因は予測できていまして。一応。
関数の list[i][0] は静的に設定してるからOKだけど、
関数の中身は動的なので list[i][1] を参照できない。
という事なんだと思います。
…しかし、原因は分かっていても、
list[i][1] を静的に設定しておく方法が分かりません。
ご教示いただければ幸いです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/12 03:13
2016/10/12 03:37
2016/10/12 05:01