回答編集履歴
4
コメントで指摘を受けた点について修正
answer
CHANGED
@@ -17,20 +17,15 @@
|
|
17
17
|
}
|
18
18
|
|
19
19
|
<script>
|
20
|
-
function clickListener () {
|
21
|
-
$(this).toggleClass('circle');
|
22
|
-
}
|
23
20
|
for (let i = 0; i < 10; i++) {
|
24
|
-
$('.box:last')
|
25
|
-
|
21
|
+
$('.box:last').after('<div class="box"></div>');
|
26
|
-
.click(clickListener);
|
27
22
|
}
|
28
|
-
$('.box
|
23
|
+
$('.box').click(function () {
|
24
|
+
$(this).toggleClass('circle');
|
25
|
+
});
|
29
26
|
</script>
|
30
27
|
```
|
31
28
|
|
32
29
|
このように修正すればよいはずです。JQueryのappend関数は、選択した要素の末尾(要素の内側であることに注意)に要素を追加します。今回の場合は要素の後に追加したいので、after関数が適切です。
|
33
30
|
|
34
|
-
この例では要素の方にイベントリスナを付けていますが、こだわりがなければwindowやdocumentにくっつけた方がぶっちゃけタイプ数は減ります。が、色々と意図しない不具合の原因になることが多々あるのでおすすめはしないです。(JQueryの入門とかみるとdocumentとかにつけてる方が多いかもですけれど……。)
|
35
|
-
|
36
31
|
また、セレクタに:lastをつけたのは1ループにつき要素を1つ増やすためです。倍々に増えていくのが正しい動作ならば消してください。
|
3
解説を追記
answer
CHANGED
@@ -29,6 +29,8 @@
|
|
29
29
|
</script>
|
30
30
|
```
|
31
31
|
|
32
|
-
このように修正すればよいはずです。JQueryのappend関数は、選択した要素の末尾(要素の内側であることに注意)に要素を追加します。今回の場合は要素の後に追加したいので、after関数が適切です。
|
32
|
+
このように修正すればよいはずです。JQueryのappend関数は、選択した要素の末尾(要素の内側であることに注意)に要素を追加します。今回の場合は要素の後に追加したいので、after関数が適切です。
|
33
33
|
|
34
|
+
この例では要素の方にイベントリスナを付けていますが、こだわりがなければwindowやdocumentにくっつけた方がぶっちゃけタイプ数は減ります。が、色々と意図しない不具合の原因になることが多々あるのでおすすめはしないです。(JQueryの入門とかみるとdocumentとかにつけてる方が多いかもですけれど……。)
|
35
|
+
|
34
36
|
また、セレクタに:lastをつけたのは1ループにつき要素を1つ増やすためです。倍々に増えていくのが正しい動作ならば消してください。
|
2
コードの修正
answer
CHANGED
@@ -17,17 +17,18 @@
|
|
17
17
|
}
|
18
18
|
|
19
19
|
<script>
|
20
|
+
function clickListener () {
|
21
|
+
$(this).toggleClass('circle');
|
22
|
+
}
|
20
23
|
for (let i = 0; i < 10; i++) {
|
21
24
|
$('.box:last')
|
22
25
|
.after('<div class="box"></div>')
|
23
|
-
.click(
|
26
|
+
.click(clickListener);
|
24
|
-
$(this).toggleClass('circle');
|
25
|
-
});
|
26
27
|
}
|
28
|
+
$('.box:last').click(clickListener);
|
27
29
|
</script>
|
28
30
|
```
|
29
31
|
|
30
|
-
このように修正すればよいはずです。JQueryのappend関数は、選択した要素の末尾(要素の内側であることに注意)に要素を追加します。
|
32
|
+
このように修正すればよいはずです。JQueryのappend関数は、選択した要素の末尾(要素の内側であることに注意)に要素を追加します。今回の場合は要素の後に追加したいので、after関数が適切です。そして、after関数の戻り値は
|
31
|
-
今回の場合は要素の後に追加したいので、after関数が適切です。
|
32
33
|
|
33
34
|
また、セレクタに:lastをつけたのは1ループにつき要素を1つ増やすためです。倍々に増えていくのが正しい動作ならば消してください。
|
1
コードのミスを修正
answer
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
$('.box:last')
|
22
22
|
.after('<div class="box"></div>')
|
23
23
|
.click(function () {
|
24
|
-
this.toggleClass('circle');
|
24
|
+
$(this).toggleClass('circle');
|
25
25
|
});
|
26
26
|
}
|
27
27
|
</script>
|