我想删除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>
我一直在玩:不是操作员,但没有成功。
答案 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 }
或更全面的
li.block, li.block>* * { display: block }