JQuery: как удалить все элементы div, кроме первого, содержащего подстроку в виде тега 'id'?

2

У меня мало элементов div, имеющих id как 'name_a_1', 'name_a_2', 'name_b_3' и так далее. Я хочу удалить все div, кроме первого имени, которое начинается с 'name_a_' с использованием JQuery или простой JS?

Я успешно попытался получить доступ к первому и последнему элементам, следуя JQuery, но как я могу получить доступ ко всем элементам, кроме первого?

$('[id^="name_a_"]').first()
$('[id^="name_a_"]').last()
Теги:

3 ответа

5
Лучший ответ

Вы можете использовать комбинацию :not() и :first selector для цели всего элемента, кроме первого.

$('[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

Пример Plain 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();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню