IE11以下でclosest() を利用する

2019/07/28

IE11以下では closest() を利用できません。 *最も近い親要素の取得 MDNによると、Elementにプロトタイプすることで対策できるとしている。 MDN: closest#Polyfill


    if (!Element.prototype.matches) {
        Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
    }
    if (!Element.prototype.closest) {
        Element.prototype.closest = function(value) {
        var element = this;
        do {
            if (element.matches(value)) return element;
            element = element.parentelementement || element.parentNode;
        } while (element !== null && element.nodeType === 1);
            return null;
        };
    }