javascript - 使用 jquery 删除除每个类中的一个之外的所有元素

标签 javascript jquery html css

我有一个 div,其中包含一些类似的元素

<code>
  <pre>
    <div class="multiSel">
      <span class="KNet" title="KNet">KNet</span>
      <span class="Visa" title="Visa">Visa</span>
      <span class="KNet" title="KNet">KNet</span>
      <span class="Visa" title="Visa">Visa</span>
    </div>
  </pre>
</code>

我想保留每个类的第一项并删除其他项

最佳答案

使用:not()选择器以及 :first选择器。

$('.KNet:not(:first),.Visa:not(:first)').remove()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<code>
  <pre>
    <div class="multiSel">
      <span class="KNet" title="KNet">KNet</span>
      <span class="Visa" title="Visa">Visa</span>
      <span class="KNet" title="KNet">KNet</span>
      <span class="Visa" title="Visa">Visa</span>
    </div>
  </pre>
</code>

更新 1: 如果所有 span 元素只有一个类名,那么您可以使用 filter() 执行类似的操作方法。

//$('.KNet:not(:first),.Visa:not(:first)').remove();

$('.multiSel span').filter(function() {
  return $(this).is(':not(.' + this.className + ':first)')
}).remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<code>
  <pre>
    <div class="multiSel">
      <span class="KNet" title="KNet">KNet</span>
      <span class="Visa" title="Visa">Visa</span>
      <span class="KNet" title="KNet">KNet</span>
      <span class="Visa" title="Visa">Visa</span>
    </div>
  </pre>
</code>


更新 2: 或者更好的方法是使用将类名作为属性的 HashMap 对象。

var hasRef = {};

$('.multiSel span').each(function() {
  if (hasRef[this.className]) $(this).remove();
  else hasRef[this.className] = true;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<code>
  <pre>
    <div class="multiSel">
      <span class="KNet" title="KNet">KNet</span>
      <span class="Visa" title="Visa">Visa</span>
      <span class="KNet" title="KNet">KNet</span>
      <span class="Visa" title="Visa">Visa</span>
    </div>
  </pre>
</code>

关于javascript - 使用 jquery 删除除每个类中的一个之外的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40340799/

相关文章:

javascript - 如何在 TinyMce 编辑器(After The Deadline 插件)中将 onClick 事件更改为 onMouseOver?

javascript - HTML5 验证无效

android - 侧导航栏未显示在移动设备中?

html - 如何在 DT 级别拆分 DL

javascript - 单击子项 jQuery 后保持菜单打开

javascript - Web 音频 API 中的自定义波形

javascript - 轴 #0 的数据列不能是谷歌图表仪表板中的字符串类型

javascript - 要求是只删除浏览器窗口上的地址栏,但保留其余的工具栏选项

javascript - Meteor 轻松搜索和 Iron-router

javascript - 在最后一个斜杠 (/) 后获取值