2017-10-08 4 views
-1

私は順序付けされていないリストと、ulの下にあるliの要素を持っています。私は期待通りにulliの値を得ることができません。私のコードはフィドルで以下のようにここにあるjsonを使用してjson内の親ul値を持つ子li値を取得

http://jsfiddle.net/mohammadwali/tkhb5/

how-do-i-convert-the-items-of-an-li-into-a-json-object-using-jquery

jquery-tree-traversal-nested-unordered-list-elements-to-json

My code is in this fiddle

私の予想出力のようにある以下のように私は、いくつかのリソースを試してみました以下:

[{ 
    "id": "1", 
    "category": "Parking", 
    "subcategory": [ 
     "Street Parking", 
     "Bus Parking" 
    ] 
}] 

JSONをどのように達成できますか?

+0

が、私は多くのことをresearced役に立てば幸い、しかし、なぜダウン投票... ... ...

var myList = []; $('ul.nameList > li').each(function() { myList.push({ "id": $(this).val(), "category": $(this).children('span.classtitle').text(), "subcategory": $(this).find('ul.subcatList li').toArray().map(function(value) { return value.innerHTML; }) }); }); 

<li value="1"><span class="cattitle">Parking</span> <ul class="subcatList"> <li>Street Parking</li> <li>Bus Parking</li> <li>Complementary Parking</li> </ul> </li> <li value="2"><span class="cattitle">Business Services</span> <ul class="subcatList"> <li>Business Center</li> <li>A/V Capabilities</li> <li>Video Conferencing</li> </ul> </li> ........ 

を使用することができますか? – RidwanulHaque

+1

私はダウン投票しませんでしたが、ここであなたのコードスニペットを追加することができれば、リンクを追加することは別として、もっとうまくいくでしょう。リンクの束を貼り付ける代わりに。 – warl0ck

答えて

1

試してみてください:
liの要素にdata-nameを追加してhtmlを少し変更しました。できれば...

var myList = []; 

$('ul.nameList > li').each(function() { 
    myList.push({ 
     "id": $(this).val(), 
     "category": $(this).clone().children('ul.subcatList').remove().end().text().trim(), 
     "subcategory": $(this).find('ul.subcatList li').toArray().map(function(value) { return value.innerHTML; }) 
    }); 
}); 


http://jsfiddle.net/tkhb5/262/

1

あなたがHTMLに触れることができない場合は、ここでのオプションを持っている...しかし:

var mylist = []; 
$(".nameList > li").each(function() { 
    mylist.push({}); 
    var self = mylist[mylist.length-1]; 
    self.subcategory = []; 
    self.id = $(this).attr("value"); 
    self.category = $(this).attr("data-name"); 
    $(this).find("ul > li").each(function(){ 
    self.subcategory.push($(this).html()); 
    }); 
    console.log(self); 
}); 

そして、ここではフィドルです私は、それを簡単に選択できるように、いくつかの要素にカテゴリ名を入れます。あなたはjQueryのを簡素化することができますので、あなたは、私はそれが

+0

あなたの答えも正しいです。 – RidwanulHaque

関連する問題