2011-10-17 5 views
1

JSONからデータを取得しましたが、ループ中に子要素(つまり、サブ項目1,2など)から追加情報を取得しようとして問題が発生しました。ここでMootools JSON(子育ての子を引っ張る)

http://jsfiddle.net/VVAFM/7/

{ 
    "title": "Main Title", 
"items": [ 
    { 
     "title": "Sub Title 1 " 
    }, 
    { 
     "title": "Sub Title 2", 
     "items": [ 
      { 
       "title": "Sub Item 1" //CAN'T GET MY HANDS ON THESE ITEMS!!!!! 
      }, 
      { 
       "title": "Sub Item 2" 
      } 
     ] 
    }, 
    { 
     "title": "Sub Title 3", 
     "items": [ 
      { 
       "title": "Sub Item 1" 
      }, 
      { 
       "title": "Sub Item 2" 
      } 
     ] 
    }, 
    { 
     "title": "Sub Title 4 " 
    } 
] 
} 

すでに作成リー内の別のULに「サブアイテムを」プルしようとする私の試みです。

var addItemsLi = function(itemsLi){ 
     itemsLi.each(function(itemLi){ 
      var el = new Element('li'), 
       name = new Element('a', {'html': itemLi.title}).inject(el); 

      if (itemLi.items){ 
        var ul = new Element('ul'), 
         li = new Element('li').inject(ul), 
         subItem = new Element('a', {'html': itemLi.items.title}).inject(li); 
      }; 

       el.inject(gallery); 
     }); 
    }; 

答えて

2

は作業フィドルです:http://jsfiddle.net/maniator/VVAFM/11/

あなたは項目の配列をループするのを忘れ:

var addItemsLi = function(itemsLi) { 
    itemsLi.each(function(itemLi) { 
     var el = new Element('li'), 
      name = new Element('a', { 
       'html': itemLi.title 
      }).inject(el); 
     if (itemLi.items) { 
      var ul = new Element('ul').inject(el) 
      for(var i = 0; i < itemLi.items.length; i++){ 
       var li = new Element('li').inject(ul); 
        subItem = new Element('a', { 
         'html': itemLi.items[i].title 
        }).inject(li); 
      } 
     }; 

     el.inject(gallery); 
    }); 
}; 
+0

ありがとうNeal、あなたは私を完全に狂ってから救った! – Starboy

1

あなたがしようとし、また、サブ項目をループする必要があります。ここでは

var addItemsLi = function(itemsLi){ 
    itemsLi.each(function(itemLi){ 
     var el = new Element('li'), 
      name = new Element('a', {'html': itemLi.title}).inject(el); 
     if (itemLi.items){ 
      var ul = new Element('ul'); 
      itemLi.items.each(function(item){ 
       var li = new Element('li').inject(ul), 
       subItem = new Element('a', {'html': item.title}).inject(li); 
      }); 
     }; 
     el.inject(gallery); 
    }); 
}; 
+0

このソリューションも機能しますが、Nealはそれを打ち負かしました。応答ありがとうとPrusseに役立ちます! – Starboy