javascript 使用唯一类隐藏重复元素

lhcgjxsq  于 2023-10-14  发布在  Java
关注(0)|答案(1)|浏览(93)

在后存档页面上有两个单独的部分。第一部分展示了两个特色帖子。每个帖子的div类对于所显示的页面是唯一的。EX:

<div class"featured">
<div class="featured-post post-1234"> post content </div>
<div class="featured-post post-9999"> post content </div>
</div>

第二部分显示此类别中的完整文章列表。

<div class="feed">
<div class="post-grid-post post-9999"> post content </div>
<div class="post-grid-post post-1111"> post content </div>
<div class="post-grid-post post-3333"> post content </div>
 </div>

我想隐藏一个职位从第二部分,如果它已经显示在第一。有麻烦,因为我不是只针对一个类,但多个。
我已经尝试了这里的建议,但它是打破我的网页,因为它是搜索整个页面,因为我还没有弄清楚如何定位父div只有Hide one Element when duplicate DIV is existing

var allElems = document.querySelectorAll('*'),
    elems = [],
    obj = {};
    
    Array.from(allElems).forEach(v => v.getAttribute('class') ? elems.push(v) : null);
    elems.forEach(v => !obj[v.getAttribute('class')] ? obj[v.getAttribute('class')] = 1 :     obj[v.getAttribute('class')]++);
    Object.keys(obj).forEach(function(v) {
      var elements = document.getElementsByClassName(v);
      if (obj[v] > 1) {
        Array.from(elements).forEach(v => v.hidden = true);
        elements[0].hidden = false;
      }
    });
bakd9h0s

bakd9h0s1#

使用jQuery,你可以很容易地实现它。
a)遍历featured-post div并获取它的最后一个类
B)隐藏包含相同类的post-grid-post div。
工作片段:

jQuery('.featured-post').each(function(){
    var classVal = jQuery(this).attr('class').split(' ')[1];
    jQuery(".post-grid-post."+classVal).hide();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class"featured">
<div class="featured-post post-1234"> post content </div>
<div class="featured-post post-9999"> post content </div>
</div>
<br>

<div class="feed">
<div class="post-grid-post post-9999"> post content </div>
<div class="post-grid-post post-1111"> post content </div>
<div class="post-grid-post post-3333"> post content </div>
 </div>

注意:因为你有WordPress网站,所以使用jQuery而不是$

相关问题