0

ネストされたコメントを含むモジュールに取り組んでいます。私のリクエストから返されたデータはajax、大まかに次のようにフォーマットされています。

  items: Array[3]
      0: Object
         Children: Array[3]
         0: Object
            Children: Array[2]
       1: Object
         Children: Array[3]
         0: Object
            Children: Array[2]

すべての親と子のコメントを検索し、リストをページ上の別の要素に追加する再帰関数を作成しました。

    function findChildren( root ) {

      if( root.length >= 1 ) {

         $.each( root, function( key, parent ) {

              units.comments.push( '<div id="root-comment-' + parent.id + '">' + parent.comment  + '</div>' );

              if( parent.children.length >=1 ) {

                $.each( parent.children, function( key, child ) {

                    units.comments.push( '<div id="child-comment-' + child.id + '">' + child.comment  + '</div>' );

                    if( child.children.length >= 1 && child.children != null ) {

                        findChildren( child.children );

                      }

                  });

               } 

            });
     }

   } findChildren( parents );

問題findChildren、要素のフラットリストを追加することです。編集を閉じていることはわかってい<div id="root-comment">ます。

   <div id="parent-comment"><p>Some Comment</p></div>
   <div id="child-comment"><p>Some Comment</p></div>

私が欲しいのは、要素のネストされたリストです

   <div id="parent-comment"><p>Some Comment</p>
       <div id="child-comment"><p>Some Comment</p></div>
   </div>

どんな助けでも大歓迎です。

4

1 に答える 1

0

<div>ネストされた部分を処理している間は開いたままにしておいて、後で閉じるというこの種のことはどうですか:

 function findChildren( root ) {
      if( root.length >= 1 ) {
         $.each( root, function( key, parent ) {
              units.comments.push( '<div id="root-comment-' + parent.id + '">' + parent.comment );
              if( parent.children.length >=1 ) {
                $.each( parent.children, function( key, child ) {
                    units.comments.push( '<div id="child-comment-' + child.id + '">' + child.comment );
                    if( child.children.length >= 1 && child.children != null ) {
                        findChildren( child.children );
                      }
                    units.comments.push( '</div>' );
                  });
               } 
            units.comments.push( '</div>' );
            });
     }
   } findChildren( parents );
于 2013-05-01T16:42:00.253 に答える