Giải pháp @rvighne hoạt động tốt, nhưng như được xác định trong các nhận xét ParentElement
và ClassList
cả hai đều có vấn đề tương thích. Để làm cho nó tương thích hơn, tôi đã sử dụng:
function findAncestor (el, cls) {
while ((el = el.parentNode) && el.className.indexOf(cls) < 0);
return el;
}
parentNode
tài sản thay vì parentElement
tài sản
indexOf
phương pháp trên className
tài sản thay vì contains
phương pháp trên classList
tài sản.
Tất nhiên, indexOf chỉ đơn giản là tìm kiếm sự hiện diện của chuỗi đó, nó không quan tâm nếu nó là toàn bộ chuỗi hay không. Vì vậy, nếu bạn có một yếu tố khác với loại 'tổ tiên', nó vẫn sẽ trở lại như đã tìm thấy 'tổ tiên', nếu đây là một vấn đề đối với bạn, có lẽ bạn có thể sử dụng regrec để tìm một kết quả khớp chính xác.
p
phần tử. Nếu bạn thực sự chỉ muốn lấy nút cha, bạn có thể làmele.parentNode
.