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

回答編集履歴

3

イベントのキャンセルを忘れてた

2021/02/23 21:50

投稿

babu_babu_baboo
babu_babu_baboo

スコア616

answer CHANGED
@@ -1,6 +1,7 @@
1
1
  ```js
2
2
  var lineHeight = parseFloat($text.css('line-height')); // line-height取得
3
3
  ```
4
+
4
5
  まずこの部分が NaN を返していますよ。
5
6
  --
6
7
  面倒そうなのであまり関わりたくないのですが、
@@ -62,7 +63,8 @@
62
63
  let e = event.target, div;
63
64
  if ('#' === e.getAttribute('href'))
64
65
  if (div = e.closest ('.box'))
65
- div.classList.toggle ('open');
66
+ div.classList.toggle ('open'),
67
+ event.preventDefault();
66
68
  }
67
69
  document.addEventListener ('click', handler, false);
68
70
  </script>

2

更に追記

2021/02/23 21:50

投稿

babu_babu_baboo
babu_babu_baboo

スコア616

answer CHANGED
@@ -2,6 +2,7 @@
2
2
  var lineHeight = parseFloat($text.css('line-height')); // line-height取得
3
3
  ```
4
4
  まずこの部分が NaN を返していますよ。
5
+ --
5
6
  面倒そうなのであまり関わりたくないのですが、
6
7
  div.more_text > p となっているので、p要素の余白、line-height の割合と font-size の乗算
7
8
  を調べると…
@@ -14,4 +15,57 @@
14
15
  ...
15
16
 
16
17
  });
17
- ```
18
+ ```
19
+
20
+ yoasobi
21
+
22
+ 高さの決め打ちなら簡単なのだけれど
23
+ ```js
24
+ <style>
25
+ div.box:not(.open) div+a+a,div.box.open div+a {
26
+ display: none;
27
+ }
28
+ div.box:not(.open) > div.more_txt {
29
+ height: 3em;
30
+ overflow: hidden;
31
+ }
32
+ p { margin: 0}
33
+ </style>
34
+
35
+ <div class="news">
36
+ <div class="box">
37
+ <h5>タイトル</h5>
38
+ <div class="more_txt">
39
+ <p>1行目<br>2行目<br>3行目<br>4行目</p>
40
+ </div>
41
+ <a href="#">続きを読む▼</a><a href="#">閉じる</a>
42
+ </div>
43
+ <div class="box">
44
+ <h5>タイトル</h5>
45
+ <div class="more_txt">
46
+ <p>1行目<br>2行目<br>3行目<br>4行目</p>
47
+ </div>
48
+ <a href="#">続きを読む▼</a><a href="#">閉じる</a>
49
+ </div>
50
+ <div class="box">
51
+ <h5>タイトル</h5>
52
+ <div class="more_txt">
53
+ <p>1行目<br>2行目<br>3行目<br>4行目</p>
54
+ </div>
55
+ <a href="#">続きを読む▼</a><a href="#">閉じる</a>
56
+ </div>
57
+ </div>
58
+
59
+ <script>
60
+
61
+ function handler (event) {
62
+ let e = event.target, div;
63
+ if ('#' === e.getAttribute('href'))
64
+ if (div = e.closest ('.box'))
65
+ div.classList.toggle ('open');
66
+ }
67
+ document.addEventListener ('click', handler, false);
68
+ </script>
69
+
70
+ ```
71
+ 提示されたコードに全角空白文字が含まれていました。寝ぼけていたので要らぬインデントに悩みました。

1

追記

2021/02/23 21:44

投稿

babu_babu_baboo
babu_babu_baboo

スコア616

answer CHANGED
@@ -1,4 +1,17 @@
1
1
  ```js
2
2
  var lineHeight = parseFloat($text.css('line-height')); // line-height取得
3
3
  ```
4
- まずこの部分が NaN を返していますよ。
4
+ まずこの部分が NaN を返していますよ。
5
+ 面倒そうなのであまり関わりたくないのですが、
6
+ div.more_text > p となっているので、p要素の余白、line-height の割合と font-size の乗算
7
+ を調べると…
8
+
9
+ --
10
+ $('.more_txt') これは複数あるのだから
11
+ ```js
12
+ $('.more_txt').each (function () {
13
+ var $text = $(this); // 本文
14
+ ...
15
+
16
+ });
17
+ ```