回答編集履歴

3

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

2021/02/23 21:50

投稿

babu_babu_baboo
babu_babu_baboo

スコア616

test CHANGED
@@ -3,6 +3,8 @@
3
3
  var lineHeight = parseFloat($text.css('line-height')); // line-height取得
4
4
 
5
5
  ```
6
+
7
+
6
8
 
7
9
  まずこの部分が NaN を返していますよ。
8
10
 
@@ -126,7 +128,9 @@
126
128
 
127
129
  if (div = e.closest ('.box'))
128
130
 
129
- div.classList.toggle ('open');
131
+ div.classList.toggle ('open'),
132
+
133
+ event.preventDefault();
130
134
 
131
135
  }
132
136
 

2

更に追記

2021/02/23 21:50

投稿

babu_babu_baboo
babu_babu_baboo

スコア616

test CHANGED
@@ -5,6 +5,8 @@
5
5
  ```
6
6
 
7
7
  まずこの部分が NaN を返していますよ。
8
+
9
+ --
8
10
 
9
11
  面倒そうなのであまり関わりたくないのですが、
10
12
 
@@ -31,3 +33,109 @@
31
33
  });
32
34
 
33
35
  ```
36
+
37
+
38
+
39
+ yoasobi
40
+
41
+
42
+
43
+ 高さの決め打ちなら簡単なのだけれど
44
+
45
+ ```js
46
+
47
+ <style>
48
+
49
+ div.box:not(.open) div+a+a,div.box.open div+a {
50
+
51
+ display: none;
52
+
53
+ }
54
+
55
+ div.box:not(.open) > div.more_txt {
56
+
57
+ height: 3em;
58
+
59
+ overflow: hidden;
60
+
61
+ }
62
+
63
+ p { margin: 0}
64
+
65
+ </style>
66
+
67
+
68
+
69
+ <div class="news">
70
+
71
+ <div class="box">
72
+
73
+ <h5>タイトル</h5>
74
+
75
+ <div class="more_txt">
76
+
77
+ <p>1行目<br>2行目<br>3行目<br>4行目</p>
78
+
79
+ </div>
80
+
81
+ <a href="#">続きを読む▼</a><a href="#">閉じる</a>
82
+
83
+ </div>
84
+
85
+ <div class="box">
86
+
87
+ <h5>タイトル</h5>
88
+
89
+ <div class="more_txt">
90
+
91
+ <p>1行目<br>2行目<br>3行目<br>4行目</p>
92
+
93
+ </div>
94
+
95
+ <a href="#">続きを読む▼</a><a href="#">閉じる</a>
96
+
97
+ </div>
98
+
99
+ <div class="box">
100
+
101
+ <h5>タイトル</h5>
102
+
103
+ <div class="more_txt">
104
+
105
+ <p>1行目<br>2行目<br>3行目<br>4行目</p>
106
+
107
+ </div>
108
+
109
+ <a href="#">続きを読む▼</a><a href="#">閉じる</a>
110
+
111
+ </div>
112
+
113
+ </div>
114
+
115
+
116
+
117
+ <script>
118
+
119
+
120
+
121
+ function handler (event) {
122
+
123
+ let e = event.target, div;
124
+
125
+ if ('#' === e.getAttribute('href'))
126
+
127
+ if (div = e.closest ('.box'))
128
+
129
+ div.classList.toggle ('open');
130
+
131
+ }
132
+
133
+ document.addEventListener ('click', handler, false);
134
+
135
+ </script>
136
+
137
+
138
+
139
+ ```
140
+
141
+ 提示されたコードに全角空白文字が含まれていました。寝ぼけていたので要らぬインデントに悩みました。

1

追記

2021/02/23 21:44

投稿

babu_babu_baboo
babu_babu_baboo

スコア616

test CHANGED
@@ -5,3 +5,29 @@
5
5
  ```
6
6
 
7
7
  まずこの部分が NaN を返していますよ。
8
+
9
+ 面倒そうなのであまり関わりたくないのですが、
10
+
11
+ div.more_text > p となっているので、p要素の余白、line-height の割合と font-size の乗算
12
+
13
+ を調べると…
14
+
15
+
16
+
17
+ --
18
+
19
+ $('.more_txt') これは複数あるのだから
20
+
21
+ ```js
22
+
23
+ $('.more_txt').each (function () {
24
+
25
+ var $text = $(this); // 本文
26
+
27
+ ...
28
+
29
+
30
+
31
+ });
32
+
33
+ ```