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

回答編集履歴

8

https://developer.mozilla.org/ja/docs/Web/API/MutationRecord

2018/04/25 03:49

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -52,4 +52,5 @@
52
52
 
53
53
  # 参考
54
54
  - [https://developer.mozilla.org/ja/docs/Web/API/MutationObserver](https://developer.mozilla.org/ja/docs/Web/API/MutationObserver)
55
+ - [https://developer.mozilla.org/ja/docs/Web/API/MutationRecord](https://developer.mozilla.org/ja/docs/Web/API/MutationRecord)
55
56
  - [https://caniuse.com/#feat=mutationobserver](https://caniuse.com/#feat=mutationobserver)

7

a

2018/04/25 03:49

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -36,10 +36,12 @@
36
36
  alert('empty value!!');
37
37
  // ここでやりたいことをご自由に
38
38
  }
39
+
39
40
  });
40
41
  });
41
42
 
42
- var config = { characterData: true };
43
+ var config = { characterData: true };
44
+
43
45
  observer.observe($textNode[0], config);
44
46
 
45
47
  });

6

a

2018/04/25 03:47

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  `span`要素内のテキスト監視以外の部分は既に出来ている、またはご自身で実装出来るようなので、監視部分のサンプルコードを書いてみました。
2
2
 
3
3
  - resetボタンを押すと、span要素内のテキストが空になる
4
- - span要素を子要素含め監視している
4
+ - span要素のテキストノードを監視している
5
5
  - span要素のテキストが空になるとアラートが表示される
6
6
 
7
7
  # デモコード

5

a

2018/04/25 03:46

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -15,10 +15,16 @@
15
15
  $(document).ready(function() {
16
16
 
17
17
  var $textField = $('#textField');
18
+
19
+ // <span id='textField'>のテキストノード
20
+ var $textNode = $textField.contents().filter(function(index, element) {
21
+ return element.nodeType === 3;
22
+ })
23
+
18
24
  var $resetButton = $('#resetButton');
19
-
25
+
20
26
  function handleButtonClick(event) {
21
- $textField.text('');
27
+ $textNode[0].textContent = '';
22
28
  }
23
29
 
24
30
  $resetButton.on('click', handleButtonClick)
@@ -26,18 +32,17 @@
26
32
  var observer = new MutationObserver((mutations) => {
27
33
  mutations.forEach((mutation) => {
28
34
 
29
- if (mutation.type === "childList" && mutation.target.textContent === "") {
35
+ if (mutation.type === "characterData" && mutation.target.textContent === "") {
30
36
  alert('empty value!!');
31
37
  // ここでやりたいことをご自由に
32
38
  }
33
39
  });
34
40
  });
35
41
 
36
- var config = { childList: true };
42
+ var config = { characterData: true };
37
- observer.observe($textField[0], config);
43
+ observer.observe($textNode[0], config);
38
44
 
39
45
  });
40
-
41
46
  ```
42
47
 
43
48
  [https://codepen.io/anon/pen/yjJBJq

4

a

2018/04/25 03:45

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -23,7 +23,7 @@
23
23
 
24
24
  $resetButton.on('click', handleButtonClick)
25
25
 
26
- const observer = new MutationObserver((mutations) => {
26
+ var observer = new MutationObserver((mutations) => {
27
27
  mutations.forEach((mutation) => {
28
28
 
29
29
  if (mutation.type === "childList" && mutation.target.textContent === "") {
@@ -33,7 +33,7 @@
33
33
  });
34
34
  });
35
35
 
36
- const config = { childList: true };
36
+ var config = { childList: true };
37
37
  observer.observe($textField[0], config);
38
38
 
39
39
  });

3

a

2018/04/25 03:18

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -25,12 +25,10 @@
25
25
 
26
26
  const observer = new MutationObserver((mutations) => {
27
27
  mutations.forEach((mutation) => {
28
+
28
- if (mutation.target.textContent === "") {
29
+ if (mutation.type === "childList" && mutation.target.textContent === "") {
29
-
30
30
  alert('empty value!!');
31
-
32
31
  // ここでやりたいことをご自由に
33
-
34
32
  }
35
33
  });
36
34
  });

2

a

2018/04/25 03:18

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -1,5 +1,9 @@
1
1
  `span`要素内のテキスト監視以外の部分は既に出来ている、またはご自身で実装出来るようなので、監視部分のサンプルコードを書いてみました。
2
2
 
3
+ - resetボタンを押すと、span要素内のテキストが空になる
4
+ - span要素を子要素含め監視している
5
+ - span要素のテキストが空になるとアラートが表示される
6
+
3
7
  # デモコード
4
8
 
5
9
  ```

1

a

2018/04/25 03:05

投稿

HayatoKamono
HayatoKamono

スコア2415

answer CHANGED
@@ -1,3 +1,7 @@
1
+ `span`要素内のテキスト監視以外の部分は既に出来ている、またはご自身で実装出来るようなので、監視部分のサンプルコードを書いてみました。
2
+
3
+ # デモコード
4
+
1
5
  ```
2
6
  <span id='textField'>100</span>
3
7
  <button id='resetButton' type='button'>reset</button>