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