回答編集履歴

3

コメントを追加

2015/12/16 06:12

投稿

think49
think49

スコア18166

test CHANGED
@@ -22,9 +22,9 @@
22
22
 
23
23
  if ($('#gNavi>.menu-item-has-children').length) {
24
24
 
25
- $('#item123>a,#item002>a').replaceWith(function () {
25
+ $('#item123>a,#item002>a').replaceWith(function () { // id 属性値は一意の為、.item-has-children の条件を削除
26
26
 
27
- return $('<div></div>').append(this.childNodes);
27
+ return $('<div></div>').append(this.childNodes); // .html() で書き換えると addEventListener を代表とするDOM参照する機能が全て解除される(新しく参照が作られる為)ので既存のDOMノードを append() するように
28
28
 
29
29
  });
30
30
 

2

`replaceWith\(\)` に修正

2015/12/16 06:12

投稿

think49
think49

スコア18166

test CHANGED
@@ -1,4 +1,6 @@
1
1
  こんなところでしょうか。
2
+
3
+ - [Edit fiddle - JSFiddle](https://jsfiddle.net/50py9Lk6/1/)
2
4
 
3
5
 
4
6
 
@@ -18,9 +20,13 @@
18
20
 
19
21
  (function ($) {
20
22
 
21
- if ($('#gNavi>.menu-item-has-children').length){
23
+ if ($('#gNavi>.menu-item-has-children').length) {
22
24
 
23
- $('#item123>a,#item002>a').wrap('<div></div>');
25
+ $('#item123>a,#item002>a').replaceWith(function () {
26
+
27
+ return $('<div></div>').append(this.childNodes);
28
+
29
+ });
24
30
 
25
31
  }
26
32
 
@@ -32,12 +38,6 @@
32
38
 
33
39
 
34
40
 
35
- **(2015/12/16 12:31追記)**
41
+ **(2015/12/16 12:31追記)** `wrapInner()` では期待通りには動作しないという指摘を頂き、`wrap()` に修正しました。
36
42
 
37
-
38
-
39
- `wrapInner()` では期待通りは動作しなという指摘を頂き、`wrap()` に修正しました。
43
+ **(2015/12/16 14:57追記)** 間違ってたので、`replaceWith()` に修正しました。
40
-
41
-
42
-
43
- - [Create a new fiddle - JSFiddle](https://jsfiddle.net/50py9Lk6/)

1

`wrapInner\(\)` では期待通りには動作しないという指摘を頂き、`wrap\(\)` に修正

2015/12/16 05:58

投稿

think49
think49

スコア18166

test CHANGED
@@ -2,16 +2,42 @@
2
2
 
3
3
 
4
4
 
5
- ```JavaScript
5
+ ```HTML
6
6
 
7
- (function($) {
7
+ <ul id="gNavi">
8
8
 
9
- if ($('#gNavi>.menu-item-has-children').length)){
9
+ <li id="item002" class="menu-item-has-children"><a href="#product002">item002</a></li>
10
10
 
11
+ <li id="item123" class="menu-item-has-children"><a href="#product123">item123</a></li>
12
+
13
+ </ul>
14
+
15
+ <script>
16
+
17
+ 'use strict';
18
+
19
+ (function ($) {
20
+
21
+ if ($('#gNavi>.menu-item-has-children').length){
22
+
11
- $('#item123>a,#item002>a').wrapInner('<div></div>');
23
+ $('#item123>a,#item002>a').wrap('<div></div>');
12
24
 
13
25
  }
14
26
 
15
- })(jQuery);
27
+ }(jQuery));
28
+
29
+ </script>
16
30
 
17
31
  ```
32
+
33
+
34
+
35
+ **(2015/12/16 12:31追記)**
36
+
37
+
38
+
39
+ `wrapInner()` では期待通りには動作しないという指摘を頂き、`wrap()` に修正しました。
40
+
41
+
42
+
43
+ - [Create a new fiddle - JSFiddle](https://jsfiddle.net/50py9Lk6/)