2013-09-24 64 views
6

我有JavaScript代碼生成下面的HTML查找和使用純JavaScript

<div class='rightbox'> 
<div class'testBox'> 

</div> 


</div> 

現在我有一個按鈕,按下應該刪除DIV衛生組織上課的時候是testbox刪除特定元素。現在即使在這種情況下,testBox並不總是rightbox中的第一個孩子。

那麼我如何找到並刪除它?然後在rightbox之後測試它是否作爲小孩出現?

回答

14

使用例如querySelector()來查找您的元素,然後使用parentNoderemoveChild()的組合來刪除它。

var el = document.querySelector('.testBox'); 
el.parentNode.removeChild(el); 

Example Fiddle

+0

實現,但是這是可用的子節點? – Marc

+0

@Marc你是什麼意思? – Sirko

+0

這種方法是否會引入內存泄漏?由於dom元素在內存中未被銷燬,因此它只與父節點分離。 –

-6

試試這個

$(".rightBox").find("div").eq(0).remove(); 
$(".rightBox").find("div.testBox").remove(); 

注:這是使用jQuery

+3

這是jquery而不是純javascript – Marc

+0

@ Marc:我已經在我的答案中指定了它。你應該讀過它。即使在答案中解釋了場景之後,任何人都可以證明倒計時是合理的。 –

+0

@GaneshPandhere你的答案是正確的downvoted。也許**你應該讀**問題的標題,其中讀**使用純JavaScript **,這意味着不使用額外的庫,如jQuery,Prototype等 – Bogdan

5
var testBoxes = Array.prototype.slice.call(document.querySelectorAll('.testBox')); 

testBoxes.forEach(function(testBox) { 
    testBox.parentNode.removeChild(testBox); 
}); 
1
var els = document.getElementsByTagName("div"); 
var el; 
for(var i = 0, ceiling = els.length; i < ceiling; i++) { 
    el = els[i]; 
    if(el.className == "testbox") { 
     el.parentNode.removeChild(el); 
     break; 
    } 
} 

var presentAsChildWithinRightbox = false; 
for(var i = 0, ceiling = els.length; i < ceiling; i++) { 
    el = els[i]; 
    if(el.className == "rightbox") { 
     var childNodes = el.childNodes; 
     for(var j = 0, ceiling2 = childNodes.length; j < ceiling2; j++) { 
      if(childNodes[j].className == "testbox") { 
       presentAsChildWithinRightbox = true; 
       j = ceiling2; 
       i = ceiling; 
      } 
     } 
    } 
} 
if(presentAsChildWithinRightbox) 
    alert("A div with classname childbox has a child div with classname testbox"); 
else 
    alert("A div with classname childbox does not have a child div with classname testbox");