Lấy phần tử cha của phần tử


208

Điều này thực sự đơn giản nhưng tôi gặp rắc rối với nó. Làm thế nào để tôi có được div cha của một phần tử con?

HTML của tôi:

<div id="test">
    <p id="myParagraph">Testing</p>
</div>

JavaScript của tôi:

var pDoc = document.getElementById("myParagraph");
var parentDiv = ??????????   

Tôi đã có thể nghĩ document.parenthoặc parent.containersẽ làm việc nhưng tôi vẫn nhận được not definedlỗi. Lưu ý rằngpDoc được xác định, chỉ không nhất định các biến của nó.

Có ý kiến ​​gì không?

PS Tôi muốn tránh jQuery nếu có thể.

Câu trả lời:


336

Bạn đang tìm kiếm parentNode, Elementkế thừa từ Node:

parentDiv = pDoc.parentNode;

Tài liệu tham khảo tiện dụng:

  • Đặc tả DOM2 Core - được hỗ trợ tốt bởi tất cả các trình duyệt chính
  • Đặc tả DOM2 HTML - các ràng buộc giữa DOM và HTML
  • Đặc tả DOM3 Core - một số cập nhật, không phải tất cả các trình duyệt chính đều hỗ trợ
  • Đặc tả HTML5 - hiện có các ràng buộc DOM / HTML trong đó

33

Nếu bạn đang tìm kiếm một loại phần tử cụ thể ở xa hơn cha mẹ trực tiếp, bạn có thể sử dụng một hàm đi lên DOM cho đến khi tìm thấy một phần tử hoặc không:

// Find first ancestor of el with tagName
// or undefined if not found
function upTo(el, tagName) {
  tagName = tagName.toLowerCase();

  while (el && el.parentNode) {
    el = el.parentNode;
    if (el.tagName && el.tagName.toLowerCase() == tagName) {
      return el;
    }
  }

  // Many DOM methods return null if they don't 
  // find the element they are searching for
  // It would be OK to omit the following and just
  // return undefined
  return null;
}

với jQuery: el.closest (tagName)
Ullullu

3
@ Ullullu Gian hãy xem, 10.000 dòng thư viện hay hàm 10 dòng? ;-)
RobG

14

Các tài sản pDoc.parentElementhoặc pDoc.parentNodesẽ giúp bạn có được các yếu tố cha.




-1

Biết cha mẹ của một yếu tố là hữu ích khi bạn đang cố gắng định vị chúng theo "dòng chảy thực" của các yếu tố.

Dưới đây mã đã cho sẽ xuất id của cha của phần tử có id được cung cấp. Có thể được sử dụng để chẩn đoán sai.

<!-- Patch of code to find parent -->
<p id="demo">Click the button </p>
<button onclick="parentFinder()">Find Parent</button>
<script>
function parentFinder()
{
    var x=document.getElementById("demo"); 
    var y=document.getElementById("*id of Element you want to know parent of*");
    x.innerHTML=y.parentNode.id;
}
</script>
<!-- Patch ends -->
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.