回答編集履歴

1

追記しました

2018/10/24 09:43

投稿

miyakichi
miyakichi

スコア297

test CHANGED
@@ -19,3 +19,217 @@
19
19
  }
20
20
 
21
21
  ```
22
+
23
+ 検証ツールとはなんでしょうか?
24
+
25
+ こちらで試したところいけましたが?
26
+
27
+ ```HTML
28
+
29
+ <!doctype html>
30
+
31
+ <html lang="ja">
32
+
33
+ <head>
34
+
35
+ <meta charset="utf-8">
36
+
37
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
38
+
39
+ <title>TEST</title>
40
+
41
+ <script src="https://cdn.jsdelivr.net/jquery/3.2.1/jquery.min.js"></script>
42
+
43
+ <style>
44
+
45
+ .is-hide {
46
+
47
+ display: none;
48
+
49
+ }
50
+
51
+ </style>
52
+
53
+ </head>
54
+
55
+ <body>
56
+
57
+ <form>
58
+
59
+ <div class="filterBox">
60
+
61
+ <div class="search-box">
62
+
63
+ <span>生地厚み</span>
64
+
65
+ <select name="oz">
66
+
67
+ <option value="">すべて</option>
68
+
69
+ <option value="4oz">~4オンス</option>
70
+
71
+ <option value="4-6oz">4.1~6オンス</option>
72
+
73
+ <option value="6-8oz">6.1~8オンス</option>
74
+
75
+ </select>
76
+
77
+ </div>
78
+
79
+ <div class="search-box">
80
+
81
+ <span>価格帯</span>
82
+
83
+ <select name="yen">
84
+
85
+ <option value="">すべて</option>
86
+
87
+ <option value="99yen">~99円</option>
88
+
89
+ <option value="100-199yen">100~199円</option>
90
+
91
+ <option value="200-299yen">200~299円</option>
92
+
93
+ <option value="300-399yen">300~399円</option>
94
+
95
+ <option value="400-499yen">400~499円</option>
96
+
97
+ <option value="500yen">500円以上</option>
98
+
99
+ </select>
100
+
101
+ </div>
102
+
103
+ <div class="search-box">
104
+
105
+ <span>形状</span>
106
+
107
+ <select name="type">
108
+
109
+ <option value="">すべて</option>
110
+
111
+ <option value="flat">マチなし</option>
112
+
113
+ <option value="ship-bottom">マチあり</option>
114
+
115
+ <option value="other">その他</option>
116
+
117
+ </select>
118
+
119
+ </div>
120
+
121
+ </div>
122
+
123
+ </form>
124
+
125
+ <ul class="list">
126
+
127
+ <li class="list_item" data-oz="4oz" data-yen="99yen" data-type="flat">
128
+
129
+ <p>1111</p>
130
+
131
+ </li>
132
+
133
+ <li class="list_item" data-oz="4-6oz" data-yen="100-199yen" data-type="flat">
134
+
135
+ <p>222</p>
136
+
137
+ </li>
138
+
139
+ </ul>
140
+
141
+ <script>
142
+
143
+ $(function() {
144
+
145
+ var searchBox = '.search-box'; // 絞り込む項目を選択するエリア
146
+
147
+ var listItem = '.list_item'; // 絞り込み対象のアイテム
148
+
149
+ var hideClass = 'is-hide'; // 絞り込み対象外の場合に付与されるclass名
150
+
151
+ $(function() {
152
+
153
+ // 絞り込み項目を変更した時
154
+
155
+ $(document).on('change', '.search-box select', function() {
156
+
157
+ search_filter();
158
+
159
+ });
160
+
161
+ });
162
+
163
+ //リストの絞り込みを行う
164
+
165
+ function search_filter() {
166
+
167
+ // 非表示状態を解除
168
+
169
+ $(listItem).removeClass(hideClass);
170
+
171
+ for (var i = 0; i < $('.search-box select').length; i++) {
172
+
173
+ var name = $('.search-box select').eq(i).attr('name');
174
+
175
+ // 選択されている項目を取得
176
+
177
+ var searchData = get_selected_input_items(name);
178
+
179
+ // 選択されている項目がない、またはALLを選択している場合は飛ばす
180
+
181
+ if(searchData.length === 0 || searchData[0] === '') {
182
+
183
+ continue;
184
+
185
+ }
186
+
187
+ // リスト内の各アイテムをチェック
188
+
189
+ for (var j = 0; j < $(listItem).length; j++) {
190
+
191
+ // アイテムに設定している項目を取得
192
+
193
+ var itemData = $(listItem).eq(j).data(name);
194
+
195
+ // 絞り込み対象かどうかを調べる
196
+
197
+ if(searchData.indexOf(itemData) === -1) {
198
+
199
+ $(listItem).eq(j).addClass(hideClass);
200
+
201
+ }
202
+
203
+ }
204
+
205
+ }
206
+
207
+ }
208
+
209
+ //選択されているoptionのvalue属性の値
210
+
211
+ function get_selected_input_items(name) {
212
+
213
+ var searchData = [];
214
+
215
+ // $('[name=' + name + ']:checked').each(function() {
216
+
217
+ $('select[name=' + name + '] option:selected').each(function() {
218
+
219
+ searchData.push($('select[name=' + name + '] option:selected').val());
220
+
221
+ });
222
+
223
+ return searchData;
224
+
225
+ }
226
+
227
+ });
228
+
229
+ </script>
230
+
231
+ </body>
232
+
233
+ </html>
234
+
235
+ ```