在页面上隐藏具有相同文字的元素

时间:2017-09-13 03:21:06

标签: javascript jquery html

我试图隐藏在div(具有特定类)中出现的页面上的任何文本不止一次。例如,如果我的页面有:

<div class="year"><h3>2015</h3></div>
<div class="year"><h3>2016</h3></div>
<div class="year"><h3>2016</h3></div>
<div class="year"><h3>2016</h3></div>
<div class="year"><h3>2017</h3></div>

在这个例子中,我想使用jQuery来检查是否存在多个具有相同子h3文本的div(具有“year”类)。如果是,则隐藏除第一个之外的所有内容,结果如下:

<div class="year"><h3>2015</h3></div>
<div class="year"><h3>2016</h3></div>
<div class="year"></div>
<div class="year"></div>
<div class="year"><h3>2017</h3></div>

任何帮助将不胜感激!感谢

1 个答案:

答案 0 :(得分:0)

我建议您使用$('.year')抓取所有元素,然后设置一个数组来存储每个元素的.innerHTML。然后,您可以循环遍历元素,并检查它们.innerHTML是否在此数组中。如果不是,它会被添加到数组中。如果它已存在,请隐藏元素:

var elements = $('.year');
var existing_content = [];
for (var i = 0; i < elements.length; i++) {
  if (existing_content.indexOf(elements[i].innerHTML) === -1) {
    existing_content.push(elements[i].innerHTML);
  }
  else {
    $(elements[i]).hide();
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="year"><h3>2015</h3></div>
<div class="year"><h3>2016</h3></div>
<div class="year"><h3>2016</h3></div>
<div class="year"><h3>2016</h3></div>
<div class="year"><h3>2017</h3></div>

请注意,这假定.year元素都具有相同的内容。如果只有.year内容的部分相同,则需要更新elements选择器以使其更具体,并直接定位具有相同内容的元素。

希望这有帮助! :)