5

このコードをディレクティブに実装したいのですが、jQLite ではうまくいきません。

 var thisCell = element.closest('.sampleclass');
4

3 に答える 3

4

.closestMDNに示されているように、Firefox と Chrome にはの実験的なバージョンがあります- Element.closest()

これを念頭に置いて、このようなものを書くことができます

var elm = document.querySelector('.myClass').closest();

またはangular.element

var elm = angular.element(document.querySelector('.myClass').closest());

もちろん、ルールには常に例外があり (aka IE)、MDN にも示されている Polyfill を使用できます- Element.closest()

if (window.Element && !Element.prototype.closest) {
    Element.prototype.closest = 
    function(s) {
        var matches = (this.document || this.ownerDocument).querySelectorAll(s),
            i,
            el = this;
        do {
            i = matches.length;
            while (--i >= 0 && matches.item(i) !== el) {};
        } while ((i < 0) && (el = el.parentElement)); 
        return el;
    };
}

私はこれを使用して、次のコード行を実行することで要素名の最も近い形式を取得しました ( IEPolyfill で動作します:

var form document.querySelector('[name="elmName"]').closest("form");
于 2016-12-15T14:28:00.963 に答える