私は、複数の値を持つキー/値のペアの周りを頭で囲んでいます。 私がしようとしているのは、div内のリストを反復して、LI
の値を取得し、それらが入っているdivに基づいてキーを作成し、それらのキーを持つ別のdivにそれらのLI
を追加しますヘッダーとして。私は基本的な結果を得ていますが、私のコードは1つの結果しか生成していません。私は各キーに複数の値を生成したい。私はで終わるしたい何複数の値を持つキー/値のペア
は、このようなオブジェクトですが、私は私が持っているデータを使用して動的にそれを生成する方法がわからない:
{ "bands": [
{ "band": "beatles", "musician": "john" },
{ "band": "beatles", "musician": "paul" },
{ "band": "beatles", "musician": "ringo" },
{ "band": "beatles", "musician": "george" },
{ "band": "stones", "musician": "mick" },
{ "band": "stones", "musician": "keith" },
{ "band": "stones", "musician": "ronnie" },
{ "band": "stones", "musician": "charlie" },
] }
HTML
<button>Click 'em</button>
<div id="beatles">
<ul>
<li>John</li>
<li>Paul</li>
<li>Ringo</li>
<li>George</li>
</ul>
</div>
<div id="stones">
<ul>
<li>Mick</li>
<li>Keith</li>
<li>Ronnie</li>
<li>Charlie</li>
</ul>
</div>
<div id="beatlesList">
<ul></ul>
</div>
<div id="stonesList">
<ul></ul>
</div>
JS/JQ
$('button').click(function(){
var $bands = {}
$('ul li').each(function(){
var $bandName = $(this).parents('div').attr('id');
var $bandMember = $(this).text();
console.log($bandName);
$bands[$bandName] = $bandMember;
})
console.log($bands);
$.each($bands,function(k,v){
if(k === "beatles") {
$('#beatlesList').prepend('<h2>' + k + '</h2>')
$('#beatlesList ul').append('<li>' + v + '</li>')
} else {
$('#stonesList').prepend('<h2>' + k + '</h2>')
$('#stonesList ul').append('<li>' + v + '</li>')
}
})
})
期待HTML成果
<button>Click 'em</button>
<div id="beatles">
<ul>
<li>John</li>
<li>Paul</li>
<li>Ringo</li>
<li>George</li>
</ul>
</div>
<div id="stones">
<ul>
<li>Mick</li>
<li>Keith</li>
<li>Ronnie</li>
<li>Charlie</li>
</ul>
</div>
<div id="beatlesList">
<h2>beatles</h2>
<ul>
<li>John</li>
<li>Paul</li>
<li>Ringo</li>
<li>George</li>
</ul>
</div>
<div id="stonesList">
<h2>stones</h2>
<ul>
<li>Mick</li>
<li>Keith</li>
<li>Ronnie</li>
<li>Charlie</li>
</ul>
</div>
リストを別のdivに移動しています。リスト全体を移動して、リストをループするのではなくタイトルとしてキーを追加するのはなぜですか? – putvande
私はリストを移動したくない、特定の要件(特定のクラスの存在)に基づいてさまざまな要素から動的に作成したい。上記の例は単純化されたケースです。 – Pixelsmith
あなたのHTMLの予想出力をその入力から表示してください。 – 4castle