###「option value」の値と、データ属性の値が一致したものを表示できるようにしたい。
現在、jsにて、絞り込みのギミックを作成しているのですが、
http://cly7796.net/wp/sample/implement-the-process-of-narrowing-down-the-list/index4.html
始めは上記のsampleのようにclass名に対して、
「option value」の値が一致した場合に表示するよう設定していたのですが、
これを「data-○○="値"」の値が一致した場合に表示するよう変更したいです。
発生している問題・エラーメッセージ
「data-○○="値"」の値がうまく取得されず、
絞り込みがうまく機能しない
特にエラーは出ていません。
該当のソースコード
html
1<html lang="ja"> 2<head> 3<title>HTML, CSS and JavaScript demo</title> 4<meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=no"> 5<link rel="stylesheet" type="text/css" href="test.css"> 6<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 7<script type="text/javascript" src="function.js"></script> 8 9</head> 10<body> 11<div id="page"> 12 <div class="serchBox"> 13 <select name="region"> 14 <option value="">地域を選択</option> 15 <option value="matudo">松戸市</option> 16 <option value="chiba">千葉市</option> 17 <option value="katuura">勝浦市</option> 18 <option value="abiko">我孫子市</option> 19 <option value="okashiwa">柏市</option> 20 </select> 21 <button id="search">検索</button> 22 <button id="reset">リセット</button> 23 </div> 24 25 <ul class="list"> 26 <li> 27 28 <p class="region"><span data-tiiki="matudo">松戸市</span></p> 29 30 </li> 31 32 </ul> 33</div> 34</body> 35</html>
js
1$(function() { 2 $(document).on('click', 'button', function() { 3 filter_list(); 4 }); 5 6 // リセットボタンをクリックしたときの処理 7 $('#reset').on('click', function() { 8 // フォームのselectとcheckboxをリセット 9 $('.serchBox select').val(''); 10 // リストの絞り込みをリセット 11 filter_list(); 12 }); 13$('#search').on('click', function() { 14 filter_list(); 15 }); 16 // リストを絞り込む関数 17 function filter_list() { 18 var lists = $('.list li'); 19 20 lists.show(); 21 for (var i = 0; i < $('.serchBox select').length; i++) { 22 // 絞り込みの項目を取得 23 var item = $('.serchBox select').eq(i).attr('name'); 24 // 絞り込みの対象を取得 25 var target = $('.serchBox select').eq(i).val(); 26 27 if(target != '') { 28 for (var j = 0; j < lists.length; j++) { 29 // 絞り込み対象でない場合は非表示 30 if(!lists.eq(j).find('.' + item).find('span').data(tiiki)) { 31 lists.eq(j).hide(); 32 } 33 }; 34 } 35 }; 36 } 37 });
試したこと
元々
js
1if(!lists.eq(j).find('.' + item).find('span').hasClass(target)) { 2 lists.eq(j).hide(); 3 }
となっていたところを
js
1if(!lists.eq(j).find('.' + item).find('span').data(tiiki)) { 2 lists.eq(j).hide(); 3 }
に変えて、データ属性の値を取得しようとしたところ、
うまくいきませんでした。
特にエラー等も出ていないため、何が原因かわかっておりません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/10 07:28