Рішення @rvighne працює добре, але, як визначено в коментарях, ParentElement
і в ClassList
обох є проблеми сумісності. Щоб зробити його більш сумісним, я використав:
function findAncestor (el, cls) {
while ((el = el.parentNode) && el.className.indexOf(cls) < 0);
return el;
}
parentNode
майно замість parentElement
власності
indexOf
метод у className
властивості замість contains
методу у classList
властивості.
Звичайно, indexOf просто шукає наявність цього рядка, йому не байдуже, це цілий рядок чи ні. Тож якби у вас був інший елемент з класом 'type-pretstor', він все одно повернеться як знайдений 'предка', якщо це проблема для вас, можливо, ви можете використовувати regexp, щоб знайти точну відповідність.
p
елементу. Якщо ви насправді хочете отримати лише батьківський вузол, ви можете це зробитиele.parentNode
.