teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

動作がCSSでは実現難しかったため変更

2017/06/16 04:45

投稿

kanimaru
kanimaru

スコア1013

answer CHANGED
@@ -1,14 +1,42 @@
1
+ >修正、CSSのみでは対応できないので以下のように変更しました。
1
2
  1.ulのliを1つのUlで囲む
2
- 2.全てのliにクラス名 visible を追加
3
+ 2.5つ目ごとのliにクラス名 _clear を追加 ※ここは最初にスクリプトで行ってもよいかもです
3
- 3.隠す際に visible をremoveClass
4
+ 3.隠す際に _clear をremoveClass
4
- 4.表示する際に visible をaddClass
5
+ 4.表示する際に _clear をaddClass
5
6
 
6
7
  レスポンシブ等は別途CSS定義必須。
7
8
 
8
9
  あと本来重複してはいけないid属性の値に重複があるのでそれは改めた方がいいかと。
9
10
 
11
+
10
12
  ```CSS
11
- .faq ul .visible:nth-of-type(4n+1){
13
+ ._clear{
12
14
  clear: both;
13
15
  }
16
+ ```
17
+ ```javascript
18
+ if (searchVal.length) {
19
+ var visibleCount = 0;
20
+ var clearNumber = 4;
21
+ for (var i in itemsIndexed) {
22
+ $item = $items.eq(i);
23
+ $item.removeClass('_clear');
24
+ if (itemsIndexed[i].indexOf(searchVal) != -1){
25
+ $item.removeClass('is-hidden').html($item.html().replace(new RegExp(searchVal + '(?!([^<]+)?>)', 'gi'), '<span class="highlight">$&</span>'));
26
+ if((visibleCount) % clearNumber==0){
27
+ $item.addClass('_clear');
28
+ }
29
+ visibleCount++;
30
+ }else{
31
+
32
+ $item.addClass('is-hidden');
33
+ }
34
+
35
+ }
36
+ }
37
+ else{
38
+ $items.removeClass('is-hidden');
39
+ $items.removeClass('_clear');
40
+ }
41
+
14
42
  ```