aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/utils/elements.js
diff options
context:
space:
mode:
authorSam Potts <sam@potts.es>2020-04-24 00:22:17 +1000
committerSam Potts <sam@potts.es>2020-04-24 00:22:17 +1000
commit2458eaa11b5c2805bcf1e5349ab900485bac325f (patch)
tree8c38683d043fdfbe8b1dcb385a446de4df7396a1 /src/js/utils/elements.js
parenta97008aeebb19678e5183e7c934e60729857e11b (diff)
parentdbe618c644a525b196466b7254274cc9bde76275 (diff)
downloadplyr-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.js20
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);