The task is to find the closest ancestor of the element of specific class with the help of pure Javascript. There are two approaches that are discussed below.
Approach 1: Use the Javascript selector to select the element. Use closest() method to get the closest parent with specific class.
Example: This example implements the above approach.
html
<!DOCTYPE HTML> < html > < head > < title > Find closest ancestor element that has a specific class using pure JavaScript </ title > </ head > < body style = "text-align:center;" > < h1 style = "color:green;" > neveropen </ h1 > < p id = "GFG_UP" > </ p > < div name = "parentDIV" class = "parent" > < div class = "child" > </ div > </ div > < button onclick = "myGFG()" > click here </ button > < p id = "GFG_DOWN" > </ p > < script > var up = document.getElementById("GFG_UP"); up.innerHTML = "Click on button to see result"; var down = document.getElementById("GFG_DOWN"); function myGFG() { var el = document.querySelector("div") .closest(".parent") down.innerHTML = "Element of name '" + el.getAttribute("name") + "' is the parent element of specific class."; } </ script > </ body > </ html > |
Output:
Approach 2 : Keep moving to the parents of the element until find the specific class. Use the element.className.indexof() method to select the element of particular class.
Example: This example implements the above approach.
html
<!DOCTYPE HTML> < html > < head > < title > Find closest ancestor element that has a specific class using pure JavaScript </ title > </ head > < body style = "text-align:center;" > < h1 style = "color:green;" > neveropen </ h1 > < p id = "GFG_UP" > </ p > < div name = "parentDIV" class = "parent" > < div class = "child" > </ div > </ div > < button onclick = "myGFG()" > click here </ button > < p id = "GFG_DOWN" > </ p > < script > var up = document.getElementById("GFG_UP"); up.innerHTML = "Click on button to see result"; var down = document.getElementById("GFG_DOWN"); function findParent(el, class) { while ((el = el.parentNode) && el.className.indexOf(class) < 0 ); return el; } function myGFG() { var el = document .querySelector(".child"); var el = findParent (el, 'parent'); down.innerHTML = "Element of name '" + el.getAttribute("name") + "' is the parent element of specific class."; } </script> </ body > </ html > |
Output: