我想删除DOM中的所有隐藏元素,但保留某些类下的所有(包括隐藏项目)。

在这里,您有一个(非)working example:

<div id="init">
    <input type="hidden" name="x" value="y" />
    <ul>
        <li>Hello</li>
        <li>Bye</li>
        <li class="block">
            <ol>
                <li>First</li>
                <li>Second</li>
                <li>Third</li>
            </ol>
        </li>
        <li>Test</li>
    </ul>
</div>

CSS:li { "display:none" }
因此,我正在寻找选择器,该选择器将删除所有隐藏项目,但那些具有块类或在块类下的项目除外。在这种情况下,预期结果是:
<div id="init">
    <ul>
        <li class="block">
            <ol>
                <li>First</li>
                <li>Second</li>
                <li>Third</li>
            </ol>
        </li>
    </ul>
</div>

我一直在玩:not运算符,但没有成功。

最佳答案

你的意思是这样吗?

$(':hidden').not('.block, .block *').remove();

或者:
$(':hidden:not(.block, .block *)').remove();

但是$.fn.not()little more reliable than :not()

09-25 17:26
查看更多