jquery
2010-11-09 50 views 1 likes 
1

我不能找到一种方法,从一个jQuery集合中删除顶级项目。这里是我的尝试:删除顶级项目设置

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> 
    <script> 
     $(function() { 
      var data = '<div id="node_1">aa</div> <div id="node_2">bb</div> <div id="node_3">cc</div>'; 
      var nodes = $(data); 
      nodes.remove("#node_2"); 
      $("#container").append(nodes); 
     }); 
    </script> 
</head> 
<body> 
    <div id="container"> </div> 
</body> 
</html> 

我预计在容器中的以下内容:

<div id="container"> 
    <div id="node_1">aa</div> 
    <div id="node_3">cc</div> 
</div> 

但节点#2不会被删除。

我怎样才能将其插入到文档之前删除节点#2

回答

2

显然,你不能删除不在此刻的DOM DOM节点。

你可以使用:

nodes = nodes.not('#b'); 

请记住,即使在(和期间)操纵,ID应该是唯一的。

+1

虽然你可以删除子元素(例如,如果我把3个div包装成一个大的元素,那么我可以删除#2)。包装是我的问题的简单答案,我想知道是否可以避免。 – 2010-11-09 23:52:05

+0

@Luper鲁什 - AndreKR说得对,我编辑我的答案,以反映这种方法和它如何在这种情况下使用。 – 2010-11-10 02:28:04

1

编辑 - 已更新为支持不将div插入到DOM中,并简单地将其插入预插入。

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> 
    <script> 
     $(function() { 
      var data = '<div class="1">aa</div> <div class="2">bb</div> <div class="3">cc</div>'; 
      $("#container_1").append(data); 
      var nodes = jQuery(data).not('.2'); 
      // In this example it's '.2', 
      // though you changed your id's in the original to something else 
      $("#container_2").append(nodes); 
     }); 
    </script> 
</head> 
<body> 
    <div id="container_1"> </div> 
    <div id="container_2"> </div> 
</body> 
</html> 
+0

身份证唯一性在这里不是问题。我用正确的唯一ID编辑我的示例代码,并且只编辑一个容器以避免混淆。 – 2010-11-09 23:55:29

+0

你是否按照我的建议的其余部分?无论您是否使用类或ID选择器,它都是真实的。 – 2010-11-10 00:11:02

+0

如果你坚持保留定义的'nodes'变量它在哪里,你可以尝试使用这个:'VAR节点= $(数据).contents();',而不是'VAR节点= $(数据);' – 2010-11-10 00:13:22

相关问题