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

回答編集履歴

2

参考コードを記載いたしました。

2021/01/11 08:11

投稿

tmykndr
tmykndr

スコア74

answer CHANGED
@@ -1,2 +1,30 @@
1
1
  [Window.getComputedStyle()](https://developer.mozilla.org/ja/docs/Web/API/Window/getComputedStyle)
2
- こちらの関数を使用すれば疑似要素のプロパティを取得できますので処理分けできるのではないでしょうか。
2
+ こちらの関数を使用すれば疑似要素のプロパティを取得できますので処理分けできるのではないでしょうか。
3
+
4
+ ---
5
+ 下記に回答を追記しました。
6
+ +とーの表現のコントロールが、`selected`クラスの有無で行われている(これと疑似要素`before`の有無が連動する)ので、上記の関数の使用は適切ではないですね。失礼しました。
7
+ 上記の関数は、疑似要素のプロパティを取れるので、例えば疑似要素の`content`プロパティなどで+とーの表現のコントロールをしていたら、処理の出しわけが可能そうです。
8
+
9
+ 今回の実装は、`selected`クラスの有無(疑似要素`before`の有無)でコントロールされていましたので、hatena19さんの回答が一番見通しが良く実現可能な実装かと思います。
10
+
11
+ 私のほうでは、`.not()`関数を使わないパターンを記載しておきます。
12
+ 「すべて表示」ボタンを押下したときに、`toggle_title`クラスが付与されている要素を走査して、`selected`クラスが付与されている場合に`if`で処理分けしています。
13
+ 「すべて非表示」ボタンも、同じように対応できるかと思います。
14
+
15
+ ```javascript
16
+ $(function(){
17
+   $(document).on('click', '.list_display', function(){
18
+     $('.toggle_title').each(function(index, item){
19
+
20
+       //下記のif内で使い回すため変数に格納する。その都度jQueryオブジェクトを作っているとコストがかかるので、使い回すのが決まっている場合は、変数に格納して使うとパフォーマンスの改善に繋がります。
21
+       $toggleTitle = $(item);
22
+
23
+       if(!$toggleTitle.hasClass('selected')) { // toggle_title が selected を持っていないとき
24
+         $toggleTitle.addClass('selected');
25
+         $toggleTitle.next().slideToggle();
26
+       }
27
+     })
28
+   });
29
+ });
30
+ ```

1

リンクを挿入しました。

2021/01/11 08:11

投稿

tmykndr
tmykndr

スコア74

answer CHANGED
@@ -1,2 +1,2 @@
1
+ [Window.getComputedStyle()](https://developer.mozilla.org/ja/docs/Web/API/Window/getComputedStyle)
1
- こちらの関数を使用すれば疑似要素を取得できますので処理分けできるのではないでしょうか。
2
+ こちらの関数を使用すれば疑似要素のプロパティを取得できますので処理分けできるのではないでしょうか。
2
- https://developer.mozilla.org/ja/docs/Web/API/Window/getComputedStyle