2

DOM ノードの親のいずれかに特定の CSS クラスがあるかどうかを確認する効率的な方法を探しています。

私の質問はこれと非常に似ています: クラスが親のどこかに存在するかどうかを確認してください-バニラ JS、ただし、これを最も効率的な方法で実装する方法に関するアドバイスを明示的に探していることを除いて(このコードは非常に頻繁に呼び出されます)。

上記の質問に対する受け入れられた回答は、再帰的な解決策を示唆しています。もっと効率の良い方法がないか検討中です。

4

3 に答える 3

1

このようなものはどうですか?

var hasClass = (function() {
    var hasClassList = !!document.documentElement.classList;

    return function(dom, cls) {
        var spaced = ' ' + cls + ' ';
        while (dom.parentNode) {
            if (hasClassList) {
                if (dom.classList.contains(cls)) {
                    return true;
                }
            } else {
                if ((' ' + dom.className + ' ').indexOf(spaced) !== -1) {
                    return true;
                }
            }
            dom = dom.parentNode;
        }
        return false;
    }
})();
于 2013-08-20T11:34:16.177 に答える
0

jQuery を使用します。

$(document).ready(function(){
    var parentIsOfClass = ($("[DOM ID or CLASS]").parents().filter("[PARENT CLASS]").length > 0);
});

http://jsfiddle.net/

true または false を返します

于 2013-08-20T11:20:02.603 に答える