このコードをディレクティブに実装したいのですが、jQLite ではうまくいきません。
var thisCell = element.closest('.sampleclass');
.closest
MDNに示されているように、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;
};
}
私はこれを使用して、次のコード行を実行することで要素名の最も近い形式を取得しました ( IE
Polyfill で動作します:
var form document.querySelector('[name="elmName"]').closest("form");