【发布时间】:2021-04-05 15:29:40
【问题描述】:
我一直在尝试用多个值来解决键/值对。
我要做的是遍历 div 中的列表,从 LIs 获取值,然后根据它们所在的 div 创建一个键,然后将这些 LIs 附加到另一个 div用他们的钥匙作为标题。我得到一个基本结果,但我的代码只产生一个结果:每个键一个值。我想为每个键生成多个值。
我想最终得到一个这样的对象,但我不知道如何使用我拥有的数据动态生成它:
{ "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。为什么不移动整个列表并将键添加为标题而不是循环遍历列表?
-
我不想移动列表,我想根据某些要求(存在某个类)从各种元素动态创建一个。上面的例子是一个简化的例子。
-
请从该输入中显示您的 HTML 的预期输出。
-
您发布的 JSON 是否被使用?看起来您可能只想将整个 UL 从一个位置移动到另一个位置。对吗?
-
请看前面的评论。这是一个简化的案例。
标签: javascript jquery key-value