比较属性并删除多个列表中的重复项

时间:2017-03-20 20:01:12

标签: javascript jquery html

我尝试创建一个jQuery脚本,可以根据每个列表项中的href属性过滤掉列表项。因此,如果href中的listOne等于href中的listTwo,我想向listTwo li添加一个类以将其删除从列表中。

<ul id="listOne">
    <li><a href="somelink"></a></li>
    <li><a href="somelink"></a></li>
</ul>
<ul id="listTwo">
    <li><a href="somelink"></a></li>
    <li><a href="somelink"></a></li>
</ul>

这是我目前在剧本中所拥有的内容:

var listOneHref = $("#listOne li a").each(function(){$(this).attr("href")});

var listTwoHref = $("#listTwo li a").each(function(){$(this).attr("title")});

if (listTwoHref = listOneHref) {
    $("#listTwo ul li").addClass("hidden");
}   else {
    $("#listTwo ul li").removeClass("hidden");
}

上述脚本的结果是&#34;隐藏&#34;类被添加到li中的每个listTwo。它似乎选择重复的hrefs。

我如何编写它以便脚本只添加&#34;隐藏&#34;从li内部href重复listOne个{{1}}的课程?

1 个答案:

答案 0 :(得分:0)

.each()不会返回您认为会出现的列表;也不会使用其结果允许您单独处理可能的匹配。

尝试:

$("#listOne li a").each(function() {
  var href = this.href;

  $('#listTwo li a').each(function() {
    if (href == this.href)
      $(this).parent().addClass('hidden');
  });
});
.hidden {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="listOne">
  <li>
    <a href="somelink"></a>
  </li>
  <li>
    <a href="somelink"></a>
  </li>
</ul>
<ul id="listTwo">
  <li><a href="somelink">hidden</a></li>
  <li><a href="somelink2">seen</a></li>
</ul>