回答編集履歴

1

ミスがあったため修正。

2018/09/01 06:27

投稿

kei344
kei344

スコア69416

test CHANGED
@@ -21,3 +21,63 @@
21
21
  } );
22
22
 
23
23
  ```**動くサンプル:**[https://jsfiddle.net/vzhjs3ad/](https://jsfiddle.net/vzhjs3ad/)
24
+
25
+
26
+
27
+ ---
28
+
29
+
30
+
31
+ **追記:**
32
+
33
+
34
+
35
+
36
+
37
+ そもそもHTMLの構造とデータの構造が乖離するので、そこから修正されるほうがよいですが。
38
+
39
+ ```JavaScript
40
+
41
+ $( '.num, .parent_num' ).each( function() {
42
+
43
+ var $_t = $( this );
44
+
45
+ var c_name = $_t.hasClass( 'num' ) ? 'num' : 'parent_num';
46
+
47
+ $_t.attr( 'data-' + c_name, $_t.text() );
48
+
49
+ } );
50
+
51
+ $( '.childrens' ).each( function() {
52
+
53
+ var $_t = $( this );
54
+
55
+ var f_num = $_t.prev().find( '.num' ).text();
56
+
57
+ $_t.find( '.parent_num' ).each( function() {
58
+
59
+ var p_num = $( this ).attr( 'data-parent_num' );
60
+
61
+ if ( f_num == p_num ) return;
62
+
63
+ var parent_num = 'xyz';
64
+
65
+ var res_num = [ p_num ];
66
+
67
+ while ( parent_num ) {
68
+
69
+ parent_num = $_t.find( '[data-num="' + res_num[ 0 ] + '"]' ).first().next().attr( 'data-parent_num' );
70
+
71
+ res_num.unshift( parent_num );
72
+
73
+ }
74
+
75
+ $( this ).text( res_num.join( '-' ) );
76
+
77
+ } );
78
+
79
+ } );
80
+
81
+
82
+
83
+ ```**動くサンプル:**[https://jsfiddle.net/vzhjs3ad/1/](https://jsfiddle.net/vzhjs3ad/1/)