@rvighne समाधान अच्छी तरह से काम करता है, लेकिन जैसा कि टिप्पणियों में पहचाना गया है ParentElement
और ClassList
दोनों में संगतता मुद्दे हैं। इसे और अधिक सुसंगत बनाने के लिए, मैंने उपयोग किया है:
function findAncestor (el, cls) {
while ((el = el.parentNode) && el.className.indexOf(cls) < 0);
return el;
}
parentNode
संपत्ति के बदले parentElement
संपत्ति
indexOf
className
संपत्ति पर विधि के बजाय संपत्ति contains
पर विधि classList
।
बेशक, इंडेक्सऑफ बस उस स्ट्रिंग की उपस्थिति की तलाश में है, यह परवाह नहीं करता है कि यह पूरी स्ट्रिंग है या नहीं। इसलिए यदि आपके पास कक्षा 'पूर्वज-प्रकार' के साथ एक और तत्व था, तो यह अभी भी 'पूर्वज' के रूप में पाया जाएगा, यदि यह आपके लिए एक समस्या है, तो शायद आप सटीक मिलान खोजने के लिए regexp का उपयोग कर सकते हैं।
p
। यदि आप वास्तव में केवल मूल नोड प्राप्त करना चाहते हैं, तो आप कर सकते हैंele.parentNode
।