У меня мало элементов 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()
Вы можете использовать комбинацию :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;
Пример 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>
Вы также можете использовать .not
чтобы исключить первый div:
$('div[id^=name_a]').not(':eq(0)').remove();