Рішення @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.