如何使用 javascript html 仅删除每个 ul 项目的重复 li 项目
P粉418214279
P粉418214279 2024-03-29 20:54:12
0
1
407

我显示了一个动态生成的导航结构。每个位置都有从该位置的商店生成的商店类型。

我需要删除每个位置的重复项,以便杂货可以出现在两个位置。我尝试了下面常见的 jquery 解决方案,该解决方案删除了​​重复项,但它导致每个 storetype 仅出现在一个位置。

var seen = {};
$("ul#storetypes").find("li").each(function(index, html_obj) {
  txt = $(this).text().toLowerCase();

  if (seen[txt]) {
    $(this).remove();
  } else {
    seen[txt] = true;
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="menu">
  <li>Location 1
    <ul id="storetypes" class="sub-menu">
      <li>groceries</li>
      <li>cakes</li>
      <li>motor spares</li>
      <li>groceries</li>
    </ul>
  </li>
  <li>Location 2
    <ul class="sub-menu">
      <li>groceries</li>
      <li>motor spares</li>
      <li>motor spares</li>
      <li>groceries</li>
    </ul>
  </li>
</ul>

P粉418214279
P粉418214279

全部回复(1)
P粉432906880

你可以这样做:

$("ul.sub-menu li").each(function(index, html_obj) {
  if ($(this).prevAll(":contains(" + $(this).text() + ")").length > 0) {
    $(this).remove();
  }
});

这将查看每个 .sub-menu 并查看是否存在具有相同文本的“li”,并删除重复的内容。

演示

$("ul.sub-menu li").each(function(index, html_obj) {
  if ($(this).prevAll(":contains(" + $(this).text() + ")").length > 0) {
    $(this).remove();
  }
});
sssccc
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板