มีฟังก์ชั่นมาตรฐานในการทำเช่นนี้มีอยู่: Element.closest เบราว์เซอร์ส่วนใหญ่ยกเว้น IE11 รองรับ ( รายละเอียดโดย caniuse.com ) เอกสาร MDNได้แก่ polyfill ในกรณีที่คุณต้องกำหนดเป้าหมายเบราว์เซอร์ที่มีอายุมากกว่า
ในการค้นหาtbodyผู้ปกครองที่ใกล้เคียงที่สุดที่thคุณสามารถทำได้:
th.closest('tbody');
ในกรณีที่คุณต้องการเขียนฟังก์ชันด้วยตัวเองนี่คือสิ่งที่ฉันคิดขึ้นมา:
function findClosestParent (startElement, fn) {
var parent = startElement.parentElement;
if (!parent) return undefined;
return fn(parent) ? parent : findClosestParent(parent, fn);
}
หากต้องการค้นหาพาเรนต์ที่ใกล้เคียงที่สุดโดยใช้ชื่อแท็กคุณสามารถใช้มันได้ดังนี้:
findClosestParent(x, element => return element.tagName === "SECTION");