我有一个div
,可以创建动态子div
<div id="abcd">
<div class="myclass">Hello</div>
<div class="myclass">World</div>
</div>
有许多div是动态生成的,我需要删除所有的子div而不删除第一个div,即div表示&#34; Hello&#34;。
答案 0 :(得分:3)
试试这个:JSFIDDLE
$('#abcd').find('.myclass:not(:first)').remove()
答案 1 :(得分:3)
如果你想要有趣的话还有一个选择:)
$('#abcd > * + *').remove();
它使用CSS选择器来选择直接子项>
(所有.myclass
div),并且在其中仅匹配任何({{1}的下一个直接兄弟(+
)前一个元素。实际上,这意味着所有的孩子都会被匹配,当然除了第一个孩子之外,因为它之前没有任何元素。
当然也可以使用general sibling selector *
~
查看下面的演示:
$('#abcd > * ~ *').remove();
&#13;
$('#abcd > * + *').remove();
&#13;
答案 2 :(得分:1)
答案 3 :(得分:1)
适合OP问题的另一个不同答案
$("#abcd .myclass").not(":eq(0)").remove();
或
$("#abcd .myclass").not(":lt(1)").remove();
或
$("#abcd .myclass").not(":first").remove();
或
$("#abcd").find(".myclass:not(:contains('Hello'))").remove();
或
$("#abcd .myclass").not(":nth-child(1)").remove();
或
$("#abcd .myclass").not(":nth-of-type(1)").remove();
或
$("#abcd .myclass").nextAll().remove();
或
$("#abcd .myclass").nextUntil().remove();
答案 4 :(得分:0)
尝试
$( "div div:first-child" ).nextAll().remove();
答案 5 :(得分:0)
答案 6 :(得分:0)
尝试.filter(fn)
:
$('#abcd div').filter(function(){
return this.textContent !== "Hello"
}).remove();
根据 skobaljic 的评论更新:
$('#abcd div').filter(function () {
return $(this).index() !== 0
}).remove();
以上代码剪切会删除问题中除<1> 必需之外的所有div。
.filter()
允许您根据不同的属性返回选择器,因此在这种情况下,我们使用.text()
&amp; .index()
。所以它将返回所有不包含 Hello
文本的div,只需将其与.remove()
方法链接即可删除。