wp/wp-includes/js/dist/vendor/wp-polyfill-element-closest.js
changeset 9 177826044cd9
child 21 48c4eec2b7e6
equal deleted inserted replaced
8:c7c34916027a 9:177826044cd9
       
     1 // element-closest | CC0-1.0 | github.com/jonathantneal/closest
       
     2 
       
     3 (function (ElementProto) {
       
     4 	if (typeof ElementProto.matches !== 'function') {
       
     5 		ElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) {
       
     6 			var element = this;
       
     7 			var elements = (element.document || element.ownerDocument).querySelectorAll(selector);
       
     8 			var index = 0;
       
     9 
       
    10 			while (elements[index] && elements[index] !== element) {
       
    11 				++index;
       
    12 			}
       
    13 
       
    14 			return Boolean(elements[index]);
       
    15 		};
       
    16 	}
       
    17 
       
    18 	if (typeof ElementProto.closest !== 'function') {
       
    19 		ElementProto.closest = function closest(selector) {
       
    20 			var element = this;
       
    21 
       
    22 			while (element && element.nodeType === 1) {
       
    23 				if (element.matches(selector)) {
       
    24 					return element;
       
    25 				}
       
    26 
       
    27 				element = element.parentNode;
       
    28 			}
       
    29 
       
    30 			return null;
       
    31 		};
       
    32 	}
       
    33 })(window.Element.prototype);