回答編集履歴
2
HTML追記漏れ
answer
CHANGED
@@ -19,6 +19,17 @@
|
|
19
19
|
|
20
20
|
-- 6/29 追記 --
|
21
21
|
基本的には変わっていませんが、TextNode取得箇所をXPathなしで書き直してみます。
|
22
|
+
```HTML
|
23
|
+
<div class="col1">
|
24
|
+
<table>
|
25
|
+
<tbody>
|
26
|
+
<tr><td>science</td></tr>
|
27
|
+
<tr><td>chemistry</td></tr>
|
28
|
+
<tr><td>science and chemistry</td></tr>
|
29
|
+
</tbody>
|
30
|
+
</table>
|
31
|
+
</div>
|
32
|
+
```
|
22
33
|
```JavaScript
|
23
34
|
function getTextNodes(parentElement) {
|
24
35
|
var nodes = [];
|
1
基本的には変わっていませんが、TextNode取得箇所をXPathなしで書き直してみます。
answer
CHANGED
@@ -15,4 +15,41 @@
|
|
15
15
|
$(node).replaceWith($.parseHTML(text));
|
16
16
|
}
|
17
17
|
});
|
18
|
+
```
|
19
|
+
|
20
|
+
-- 6/29 追記 --
|
21
|
+
基本的には変わっていませんが、TextNode取得箇所をXPathなしで書き直してみます。
|
22
|
+
```JavaScript
|
23
|
+
function getTextNodes(parentElement) {
|
24
|
+
var nodes = [];
|
25
|
+
$(parentElement).contents().each(function(index, element) {
|
26
|
+
switch (element.nodeType) {
|
27
|
+
case document.TEXT_NODE:
|
28
|
+
nodes.push(element);
|
29
|
+
break;
|
30
|
+
case document.ELEMENT_NODE:
|
31
|
+
nodes = nodes.concat(getTextNodes(element));
|
32
|
+
break;
|
33
|
+
}
|
34
|
+
});
|
35
|
+
return nodes;
|
36
|
+
}
|
37
|
+
|
38
|
+
var list = {
|
39
|
+
science: '<div class="subject science">科学</div>',
|
40
|
+
chemistry: '<div class="subject chemistry">化学</div>'
|
41
|
+
};
|
42
|
+
|
43
|
+
$("div.col1").each(function(index, element) {
|
44
|
+
var nodes = getTextNodes(element);
|
45
|
+
for (var j = 0; j < nodes.length; j++) {
|
46
|
+
var node = nodes[j];
|
47
|
+
var text = node.nodeValue;
|
48
|
+
for (var i in list) {
|
49
|
+
text = text.replace(i, list[i]);
|
50
|
+
}
|
51
|
+
|
52
|
+
$(node).replaceWith($.parseHTML(text));
|
53
|
+
}
|
54
|
+
});
|
18
55
|
```
|