29 lines
1.0 KiB
JavaScript
29 lines
1.0 KiB
JavaScript
![]() |
// Polyfill for Element.closest that falls back to Element.matches that falls back to querySelectorAll
|
||
|
// Created for blazy.js 1.8.1 - https://github.com/dinbror/blazy to ensure IE7+ support
|
||
|
|
||
|
|
||
|
(function () {
|
||
|
if (!Element.prototype.matches) {
|
||
|
Element.prototype.matches =
|
||
|
Element.prototype.matchesSelector ||
|
||
|
Element.prototype.mozMatchesSelector ||
|
||
|
Element.prototype.msMatchesSelector ||
|
||
|
Element.prototype.oMatchesSelector ||
|
||
|
Element.prototype.webkitMatchesSelector ||
|
||
|
function(s) {
|
||
|
var matches = (this.document || this.ownerDocument).querySelectorAll(s),
|
||
|
i = matches.length;
|
||
|
while (--i >= 0 && matches.item(i) !== this) {}
|
||
|
return i > -1;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
if (!Element.prototype.closest) {
|
||
|
Element.prototype.closest = Element.prototype.closest ||
|
||
|
function(selector) {
|
||
|
var element = this;
|
||
|
while (element.matches && !element.matches(selector)) element = element.parentNode;
|
||
|
return element.matches ? element : null;
|
||
|
};
|
||
|
}
|
||
|
})();
|