選択された<select>のvalue値と<input>のdata-valの値が一致したもののみを表示させたいです。
試してみたjqueryも載せておきますが、もっと簡単な方法があれば教えていただきたいです。
例えば、あらかじめ配列とvalue値が空の<li>を用意しておいて、そこに値が一致したものの配列を<li>のvalue値に代入して表示させるなど。これがそもそも実現可能なのかも分かりませんが…(無視していただいて構いません。)
実際はhtmlのリストがすごい量になるので、簡易化できればと…
html
1<div class="select_box"> 2 <select class="parent"> 3 <option></option> 4 <option value="select01">①</option> 5 <option value="select02">②</option> 6 </select> 7</div> 8 9<ul> 10 <li class="children"> 11 <input type="text" value="①の子要素1" data-val="select01"> 12 </li> 13 <li class="children"> 14 <input type="text" value="①の子要素2" data-val="select01"> 15 </li> 16 <li class="children"> 17 <input type="text" value="①の子要素3" data-val="select01"> 18 </li> 19 <li class="children"> 20 <input type="text" value="②の子要素1" data-val="select02"> 21 </li> 22 <li class="children"> 23 <input type="text" value="②の子要素2" data-val="select02"> 24 </li> 25 <li class="children"> 26 <input type="text" value="②の子要素3" data-val="select02"> 27 </li> 28</ul> 29 30※<li>はdisplay:none;で非表示状態
jquery
1var $children = $('.children'); 2var original = $children.html(); 3 4$(' .parent').change(function() { 5 6 var val1 = $(this).val(); 7 8 $children.html(original).find('input').each(function() { 9 var val2 = $(this).data('val'); 10 if (val1 = val2) { 11 $(this).parents('.children').show(); 12 } 13}); 14
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー