前提・実現したいこと
JQuery
1$(function () { 2 $('#hide-text1').on('click', () => { 3 $('#text1').show('slow'); 4 }); 5}); 6 7$(function () { 8 $('#hide-text2').on('click', () => { 9 $('#text2').show('slow'); 10 }); 11}); 12 13$(function () { 14 $('#hide-text3').on('click', () => { 15 $('#text3').show('slow'); 16 }); 17});
このように書けば実装はできますが、このままだと記述が多くなってしまいます。
その為、idの連番を取得したいです。
###試したこと
JQuery
1let i = 1 2$(function () { 3 $('#hide-text1'+(i++)).on('click', () => { 4 $('#text1'+(i++)).show('slow'); 5 }); 6});
iで足していき取得しようとしたが、うまくいきませんでした。
アドバイスを頂きたいです。よろしくお願いします。
###追記
html
1@categories.each do |category| 2 <div class="title" id="hide-text"> 3 = category.name 4 </div> 5 <div class="category" id="text"> 6 category.children.each do |child| 7 = child.name 8 end 9 </div> 10end
css
1.category { 2 display: none; 3}
jQuery
1$(function(){ 2 $('div.title').each(function(i){ 3 $(this).attr('id','hide-text' + (i+1)); 4 }); 5}); 6 7$(function(){ 8 $('div.category').each(function(i){ 9 $(this).attr('id','text' + (i+1)); 10 }); 11});
classとかは使ってはいけない縛りとかあるのですか?
思った通りに振られないのは当然として
$('#hide-text1'+(i++))
これだと #hide-text11 になります。
縛りは無いです!
classでも問題ないです。
では、HTML、CSSを提示してください。
JavaScriptのコードだけで法則性は見えませんし、動作確認が出来ません。
追記をしましたので、ご確認の程よろしくお願いします。
>Haml
ブラウザに出力されたHTMLを提示された方が良いかと思います。
動作確認のためにフレームワークやテンプレートエンジンなどわざわざ環境準備しなければなりませんし、現在の質問にはHamlに関係するタグがついていません。
ご指摘ありがとうございます。今後htmlで記述するようにします。
ブラウザに出力されたHTMLを提示してください。
回答2件
あなたの回答
tips
プレビュー