JS删除除特定ID及其子项之外的所有元素

时间:2018-01-03 16:17:52

标签: javascript jquery html

对此的回应: How to remove elements except any specific id 接近我想要的但不完全。

在我的情况下,我问我如何删除父id以外的所有元素,除了id_n及其子节点:test1和test2。需要删除元素,而不仅仅是隐藏。

<div id = "parent_id">
  <div id = "id_1">
      <div id = "id_11"> test</div>
      <div id = "id_12">test </div>
  </div>
  <div id = "id_2"> test</div> 

  <div id = "id_n">id_n<br>
      <div id='test1'>test1<br><div>
      <div id='test2'>test2<br><div>
  </div> 
</div>

结果应为:

<div id = "parent_id">
  <div id = "id_n">id_n<br>
      <div id='test1'>test1<br><div>
      <div id='test2'>test2<br><div>
  </div> 
</div>

感谢您查看此内容。您的建议表示赞赏。

2 个答案:

答案 0 :(得分:1)

好的,考虑到这一点后,还有另一种使用数组操作的方法:

var parentElement = document.getElementById('#parent_id');
parentElement.innerHtml = [].splice.call(parentElement.children).filter(item, function() { 
  return item.id === childId; 
}).reduce((collatedHtml, item, function() { 
  return collatedHtml + item.innerHtml;
});

这会抓取parentElement的所有直接子节点并返回一个新数组(使用Array.filter),然后使用Array.Reduce整理所有子节点的innerHtml。

注意:我没有使用...前缀转换为数组的原因是因为IE 11及以下版本不支持

答案 1 :(得分:1)

使用jQuery&#39; siblings删除所有孩子:

  $('#id_n').siblings().remove();