diff options
author | Sam Potts <sam@potts.es> | 2020-04-24 00:22:17 +1000 |
---|---|---|
committer | Sam Potts <sam@potts.es> | 2020-04-24 00:22:17 +1000 |
commit | 2458eaa11b5c2805bcf1e5349ab900485bac325f (patch) | |
tree | 8c38683d043fdfbe8b1dcb385a446de4df7396a1 /src/js/utils/elements.js | |
parent | a97008aeebb19678e5183e7c934e60729857e11b (diff) | |
parent | dbe618c644a525b196466b7254274cc9bde76275 (diff) | |
download | plyr-2458eaa11b5c2805bcf1e5349ab900485bac325f.tar.lz plyr-2458eaa11b5c2805bcf1e5349ab900485bac325f.tar.xz plyr-2458eaa11b5c2805bcf1e5349ab900485bac325f.zip |
Merge branch 'develop' into css-variables
# Conflicts:
# src/js/captions.js
# src/js/config/defaults.js
# src/js/fullscreen.js
# src/js/listeners.js
# src/js/plyr.js
Diffstat (limited to 'src/js/utils/elements.js')
-rw-r--r-- | src/js/utils/elements.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/js/utils/elements.js b/src/js/utils/elements.js index b48fa7e1..1d13b701 100644 --- a/src/js/utils/elements.js +++ b/src/js/utils/elements.js @@ -237,6 +237,26 @@ export function matches(element, selector) { return method.call(element, selector); } +// Closest ancestor element matching selector (also tests element itself) +export function closest(element, selector) { + const { prototype } = Element; + + // https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill + function closestElement() { + let el = this; + + do { + if (matches.matches(el, selector)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + } + + const method = prototype.closest || closestElement; + + return method.call(element, selector); +} + // Find all elements export function getElements(selector) { return this.elements.container.querySelectorAll(selector); |