如何删除除JQuery中的一些DOM元素之外的所有元素?

Iva*_*van 10 jquery

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

这里有一个(非)工作示例:

<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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

我一直在玩:不是运营商,但没有成功.

zzz*_*Bov 11

你的意思是这样的?

$(':hidden').not('.block, .block *').remove();
Run Code Online (Sandbox Code Playgroud)

或者:

$(':hidden:not(.block, .block *)').remove();
Run Code Online (Sandbox Code Playgroud)

不过$.fn.not()是一个小比更可靠:not()