Javascript 如果父元素重复,则移动子元素
只是盯着这里看。如果父项名称重复,是否可以将子元素从一个父项移动到另一个父项下 例如: 如何将其他内容和类似内容放在一个作文父项下,将其他人放在一个内容下,并删除重复内容。 这在javascript或jquery中是可能的吗?谢谢大家!Javascript 如果父元素重复,则移动子元素,javascript,jquery,Javascript,Jquery,只是盯着这里看。如果父项名称重复,是否可以将子元素从一个父项移动到另一个父项下 例如: 如何将其他内容和类似内容放在一个作文父项下,将其他人放在一个内容下,并删除重复内容。 这在javascript或jquery中是可能的吗?谢谢大家! <li> <h4>Composition</h4> <p>Something</p> </li> <li> <h4>Composition</h4&
<li>
<h4>Composition</h4>
<p>Something</p>
</li>
<li>
<h4>Composition</h4>
<p>Something else</p>
</li>
<li>
<h4>Composition</h4>
<p>Something like</p>
</li>
<li>
<h4>Content</h4>
<p>Someone</p>
</li>
<h4>Content</h4>
<p>Someone else</p>
</li>
使用jQuery,您可以使用
detach()
、append()
和prepend()删除和添加元素
比如这里:(但是用$
替换jQuery
)是的,我不知道这是否是最好的方法,但这是有效的,我的方法是通过制作一个arrayobject(js)作为您想要的新模型
逻辑是我提取h4的文本并检查数据变量是否已在那里注册,如果尚未注册,则将其推送到数据和子文本(p)
如果已注册,则我仅推送子文本
let data = [];
const lists = document.querySelectorAll('li').forEach( (li, liIdx) => {
let parentName = li.querySelector('h4').innerHTML;
let childName = li.querySelector('p').innerHTML;
let isRegistered = data.find( x => x.parentName === parentName);
if(!isRegistered) {
childName = [childName];
data.push({ parentName, childName});
}else {
console.log(isRegistered)
isRegistered.childName.push(childName);
}
});
这就是我们得到的
0:
childName: (3) ["Something", "Something else", "Something like"]
parentName: "Composition"
1:
childName: (2) ["Someone", "Someone else"]
parentName: "Content"
然后重置ol标记并重建其项
let ol = document.querySelector('ol');
ol.innerHTML = '';
data.map( d => {
let p = d.childName.map( c => `<p>${c}</p>`).join('');
ol.insertAdjacentHTML('beforeend', `
<li>
<h4>${d.parentName}</h4>
${p}
</li>
`);
})
let ol=document.querySelector('ol');
ol.innerHTML='';
data.map(d=>{
让p=d.childName.map(c=>`${c}`).join(“”);
ol.INSERTADJACENTHML('BEFOREND'`
${d.parentName}
${p}
`);
})
在请求帮助之前,您应该尝试自己解决问题。对于javascript.JS.appendChild/ParentNode.append().prepend().insertBefore(),这绝对是可能的,而且相对容易,您可以选择…@JakeParis,我刚刚做了,感谢您指出:)如注释中所述,“分离是不必要的”,只需使用.append()
let ol = document.querySelector('ol');
ol.innerHTML = '';
data.map( d => {
let p = d.childName.map( c => `<p>${c}</p>`).join('');
ol.insertAdjacentHTML('beforeend', `
<li>
<h4>${d.parentName}</h4>
${p}
</li>
`);
})