Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果父元素重复,则移动子元素_Javascript_Jquery - Fatal编程技术网

Javascript 如果父元素重复,则移动子元素

Javascript 如果父元素重复,则移动子元素,javascript,jquery,Javascript,Jquery,只是盯着这里看。如果父项名称重复,是否可以将子元素从一个父项移动到另一个父项下 例如: 如何将其他内容和类似内容放在一个作文父项下,将其他人放在一个内容下,并删除重复内容。 这在javascript或jquery中是可能的吗?谢谢大家! <li> <h4>Composition</h4> <p>Something</p> </li> <li> <h4>Composition</h4&

只是盯着这里看。如果父项名称重复,是否可以将子元素从一个父项移动到另一个父项下

例如:

如何将其他内容类似内容放在一个作文父项下,将其他人放在一个内容下,并删除重复内容。 这在javascript或jquery中是可能的吗?谢谢大家!

<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>
                `);
            })