如何删除除任何特定id之外的元素

时间:2011-08-25 07:00:59

标签: javascript jquery

假设有一个包含许多元素的父ID,我想删除除一个之外的所有元素。

离。 :

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

  <div id = "id_n"> </div>   // No need to remove this id_n only
</div>

因为我可以删除像这个document.getElementId('parent_id').innerHTML = '';的innerHTML,但我不需要删除id_n。有什么办法可以使用javascript或jQuery。

6 个答案:

答案 0 :(得分:7)

$("#parent_id").children(":not(#id_n)").remove();

答案 1 :(得分:2)

$("#parent_id > :not(#id_n)").remove();

答案 2 :(得分:2)

我认为Attribute Not Equals选择器在这里有意义。

$("#parent_id div[id!='id_n']").remove();

Demo.

答案 3 :(得分:2)

为了好玩,POJS是一个更多的代码,但没有jQuery: - )

var p = document.getElementById('parent_id');
var d = document.getElementById('id_n');
p.innerHTML = '';
p.appendChild(d);

很多faster too。 ; - )

答案 4 :(得分:1)

使用jQuery删除id_n以外的所有子节点:

$('#parent_id div').not('#id_n').remove();

如果您要删除parent_id:

$('#id_n').insertAfter('#parent_id');
$('#parent_id').remove();

答案 5 :(得分:1)

不需要 jQuery:

const parent = document.querySelector('#parent_id');
const keepElem = document.querySelector('#id_n');
                
[...parent.children]
  .forEach(child => child !== keepElem ? parent.removeChild(child) : null);