jquery
2010-11-09 71 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

相關問題