首页 > 解决方案 > 如何获取每个字符串的第一个实例?

问题描述

jQuery中是否有一种方法可以找到包含第一个字符串实例的每个元素?

<ul>
    <li>1</li> <-- find this
    <li>1</li>
    <li>1</li>
    <li>2</li> <-- find this
    <li>2</li>
    <li>3</li> <-- find this
    <li>3</li>
    <li>3</li>
    <li>3</li>
</ul>

标签: javascriptjquery

解决方案


一种选择是使用Set对象来跟踪<li>. 用于获取对象上未找到的filter所有对象。<li>Set

$(function() {
  var found = new Set();
  var firstLI = $("ul > li").filter(function() {
    var text = $(this).text().trim();
    if (!found.has(text)) {
      found.add(text);
      return true;
    }

    return false;
  });

  //Testting
  firstLI.addClass("first");
});
.first {
  background-color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li>1</li> <!-- find this -->
  <li>1</li>
  <li>1</li>
  <li>2</li> <!-- find this -->
  <li>2</li>
  <li>3</li> <!-- find this -->
  <li>3</li>
  <li>3</li>
  <li>3</li>
</ul>


推荐阅读