【问题标题】:jQuery loop though DOM elements and removejQuery 循环遍历 DOM 元素并删除
【发布时间】:2026-02-01 04:25:02
【问题描述】:

我有一些这样的 HTML 元素

<input type="hidden" name="combos[0][pics][01]">
<input type="hidden" name="combos[0][pics][02]">
<input type="hidden" name="combos[1][pics][01]">
<input type="hidden" name="combos[1][pics][02]">
<input type="hidden" name="combos[2][pics][01]">
<input type="hidden" name="combos[2][pics][02]">

如何使用 jquery 的 $.each 函数循环遍历这些并删除每个以 [pics][02] 结尾的 DOM 元素。

【问题讨论】:

  • 你不需要明确地使用每个。只需找到它们,然后使用 remove()。 jQuery 将对整个结果堆栈执行隐式的 each。

标签: javascript jquery html jquery-selectors


【解决方案1】:

您可以使用选择器$= 结尾,完整的选择器可以简单地像:

'input[type="hidden"][name$="[pics][02]'

而且你不需要循环:

$('input[type="hidden"][name$="[pics][02]').remove();

在选择器结果上调用remove() 函数会将它们全部删除。

注意:正如 @David Thomas 的评论所说,可以使用纯 JS 来完成,例如:

 document.querySelectorAll('input[type=hidden][name$="[pics][02]"').forEach((el)=>el.remove());

console.log('Length BEFORE remove : ' + $('input[type="hidden"]').length);

$('input[type="hidden"][name$="[pics][02]').remove();

console.log('Length AFTER remove : ' + $('input[type="hidden"]').length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="hidden" name="combos[0][pics][01]">
<input type="hidden" name="combos[0][pics][02]">
<input type="hidden" name="combos[1][pics][01]">
<input type="hidden" name="combos[1][pics][02]">
<input type="hidden" name="combos[2][pics][01]">
<input type="hidden" name="combos[2][pics][02]">

【讨论】:

  • 虽然这是一个 jQuery 问题,但值得指出的是,使用纯 JavaScript 很有可能做到这一点:document. querySelectorAll ('input[type=hidden][name$="[pics][02]"').forEach((el)=&gt;el.remove());
  • 感谢您的干预,您的建议现在已添加到答案中...
  • @DavidThomas 很高兴看到有人建议 js 等价物,而不是全神贯注地抱怨当有一个 js 版本并且我们所有的 jquery 开发人员都在自欺欺人时,使用 jquery 作为一个内衬是多么毫无意义亚达亚达 :)
  • @freedomn-m:我是那些几乎完全偶然地学习 JavaScript 的人之一,因为在 SO 上使用 jQuery 并且问了很多关于 jQuery 的问题,所以批评别人完全是虚伪的用于偏好/使用 jQuery。我确实,现在,更喜欢纯 JavaScript,并且相信在 ES6 中,对 jQuery 的需求正在减少,但我仍然不会试图欺负人们改变他们喜欢的工作流程。不过,在这种情况下,更多的是创建一个更完整的答案以减少未来的重复...... :)