JQuery:如何删除除第一个包含子字符串"id"标记的div元素之外的所有div元素?

3
我有几个ID为'name_a_1'、'name_a_2'、'name_b_3'等的div元素。我想使用JQuery或纯JS删除除第一个以'name_a_'开头的名称外的所有div。
我成功地尝试了以下JQuery来访问第一个和最后一个元素,但是如何访问除第一个元素外的所有元素呢?
$('[id^="name_a_"]').first()
$('[id^="name_a_"]').last()
3个回答

6

您可以使用组合选择器 :not():first 来选取除第一个以外的所有元素。

$('[id^="name_a_"]:not(:first)').remove()

或者,:gt(index)选择器

选择匹配集合中索引大于指定值的所有元素。

$('[id^="name_a_"]:gt(0)').remove()

要检查元素是否具有值,可以使用.filter()
var hasValue = $('[id^="name_a_"]').filter(function(){
    return $(this).val().trim() !== '';
}).length > 0;

2

使用纯JS示例,使用Array.prototype.slice获取除第一个外的所有匹配元素。

Array.prototype.slice.call(document.querySelectorAll('[id^="name_a_"]'), 1)
    .forEach(elt => elt.parentNode.removeChild(elt))
<ul>
<li id="name_a_1">name_a_1</li>
<li id="name_a_2">name_a_2</li>
<li id="name_a_3">name_a_3</li>
<li id="name_a_4">name_a_4</li>
</ul>


1
您可以使用.not来排除第一个div:
$('div[id^=name_a]').not(':eq(0)').remove();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接