如何检查元素是否与纯JS中的:empty伪类相匹配?

rvi*_*hne 2 html javascript css css-selectors css3

如果给定的HTML元素为空,我如何在纯JavaScript(没有jQuery,没有库)中检查?我对"empty"的定义与CSS:empty伪类相同.因此,如果给定元素与:empty选择器匹配,那么我想知道它.

rvi*_*hne 5

function isEmpty (el) {
    if (!el.hasChildNodes()) return true;

    for (var node = el.firstChild; node = node.nextSibling;) {
        var type = node.nodeType;
        if (type === 1 && !isEmpty(node) || // another element
            type === 3 && node.nodeValue) { // text node
            return false;
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

根据CSS规范,true如果给定元素没有非空子节点,则返回.期待已久的JSFiddle演示版.