2013-09-24 33 views
6

Tôi có javascript mà tạo ra mã HTML sauTìm và loại bỏ yếu tố cụ thể sử dụng javascript tinh khiết

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

</div> 


</div> 

Bây giờ tôi có một nút mà khi ép nên loại bỏ lớp div whos là testbox. Bây giờ mặc dù trong trường hợp này, không phải lúc nào cũng là testBox là đứa trẻ đầu tiên trong số rightbox.

Vậy làm thế nào để tôi tìm và xóa nó? và sau đó kiểm tra nếu nó hiện diện như một đứa trẻ trong số rightbox?

Trả lời

14

Sử dụng, ví dụ: querySelector() để tìm phần tử của bạn và sau đó kết hợp parentNoderemoveChild() để xóa.

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

Example Fiddle

+0

nhưng là này sử dụng được đến nút con? – Marc

+0

@Marc Ý của bạn là gì? – Sirko

+0

Cách tiếp cận này có giới thiệu rò rỉ bộ nhớ không? Bởi vì phần tử dom không bị phá hủy trong bộ nhớ, nó chỉ bị ngắt kết nối khỏi nút cha. –

-6

Hãy thử điều này

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

Lưu ý: Đây được thực hiện sử dụng jQuery

+3

đó là Jquery và không thuần túy javascript – Marc

+0

@ Marc: Tôi đã chỉ định nó trong câu trả lời của tôi. và bạn nên đọc nó. Sẽ tốt hơn nếu bất cứ ai có thể biện minh cho việc giảm giá ngay cả sau khi giải thích kịch bản trong câu trả lời. –

+0

@GaneshPandhere Câu trả lời của bạn đã được giảm xuống đúng cách. Có lẽ ** bạn nên đọc ** tiêu đề của câu hỏi, mà đọc ** sử dụng javascript tinh khiết **, có nghĩa là không sử dụng các thư viện bổ sung như jQuery, Prototype, v.v. – 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"); 
Các vấn đề liên quan