123456789101112131415161718192021222324252627282930313233 |
- var DOCUMENT_NODE_TYPE = 9;
- /**
- * A polyfill for Element.matches()
- */
- if (typeof Element !== 'undefined' && !Element.prototype.matches) {
- var proto = Element.prototype;
- proto.matches = proto.matchesSelector ||
- proto.mozMatchesSelector ||
- proto.msMatchesSelector ||
- proto.oMatchesSelector ||
- proto.webkitMatchesSelector;
- }
- /**
- * Finds the closest parent that matches a selector.
- *
- * @param {Element} element
- * @param {String} selector
- * @return {Function}
- */
- function closest (element, selector) {
- while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {
- if (typeof element.matches === 'function' &&
- element.matches(selector)) {
- return element;
- }
- element = element.parentNode;
- }
- }
- module.exports = closest;
|