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

时间:2011-10-04 19:56:50

标签: jquery

我想删除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>

我一直在玩:不是操作员,但没有成功。

2 个答案:

答案 0 :(得分:9)

你的意思是这样吗?

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

可替换地:

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

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

答案 1 :(得分:0)

你实际上可以只使用CSS:

li.block, li.block li { display: block }

Example


或更全面的

li.block, li.block>* * { display: block }