You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
895 B
33 lines
895 B
// element-closest | CC0-1.0 | github.com/jonathantneal/closest |
|
|
|
(function (ElementProto) { |
|
if (typeof ElementProto.matches !== 'function') { |
|
ElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) { |
|
var element = this; |
|
var elements = (element.document || element.ownerDocument).querySelectorAll(selector); |
|
var index = 0; |
|
|
|
while (elements[index] && elements[index] !== element) { |
|
++index; |
|
} |
|
|
|
return Boolean(elements[index]); |
|
}; |
|
} |
|
|
|
if (typeof ElementProto.closest !== 'function') { |
|
ElementProto.closest = function closest(selector) { |
|
var element = this; |
|
|
|
while (element && element.nodeType === 1) { |
|
if (element.matches(selector)) { |
|
return element; |
|
} |
|
|
|
element = element.parentNode; |
|
} |
|
|
|
return null; |
|
}; |
|
} |
|
})(window.Element.prototype);
|
|
|