@rvighne çözümü iyi çalışıyor, ancak yorumlarda belirtildiği gibi ParentElement
ve ClassList
her ikisinin de uyumluluk sorunları var. Daha uyumlu hale getirmek için kullandım:
function findAncestor (el, cls) {
while ((el = el.parentNode) && el.className.indexOf(cls) < 0);
return el;
}
parentNode
özellik yerine parentElement
özellik
indexOf
yöntem üzerinde className
özellik yerine contains
yöntem classList
.
Tabii ki, indexOf sadece bu dizenin varlığını arıyor, dizenin tamamı olup olmadığını umursamıyor. Eğer 'ancestor-type' sınıfına sahip başka bir elemanınız varsa, yine de 'atası' bulmuş gibi geri dönecektir, eğer bu sizin için bir problemse, belki de tam bir eşleşme bulmak için regexp kullanabilirsiniz.
p
. Aslında sadece üst düğümü almak istiyorsanız, bunu yapabilirsinizele.parentNode
.