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;
|
|
};
|
|
}
|
|
})(); |