Giải pháp @rvighne hoạt động tốt, nhưng như được xác định trong các nhận xét ParentElementvà ClassListcả 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;
}
parentNodetài sản thay vì parentElementtài sản
indexOfphương pháp trên classNametài sản thay vì containsphương pháp trên classListtà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.
pphần tử. Nếu bạn thực sự chỉ muốn lấy nút cha, bạn có thể làmele.parentNode.