首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过分组选择每个第一个唯一元素

通过分组选择每个第一个唯一元素
EN

Stack Overflow用户
提问于 2016-08-11 03:23:34
回答 2查看 71关注 0票数 3

我有一个具有交替类的元素列表。类的出现是随机的,可以连续出现一次或多次。

我正在寻找一种方法来选择元素的第一次出现(用-标记)。最好使用CSS,但我也可以使用JavaScript解决方案。

代码语言:javascript
复制
<div class="type-1"></div>  -
<div class="type-1"></div>
<div class="type-1"></div>
<div class="type-2"></div>  -
<div class="type-1"></div>  -
<div class="type-1"></div>
<div class="type-2"></div>  -
<div class="type-2"></div>
<div class="type-1"></div>  -
...
EN

回答 2

Stack Overflow用户

发布于 2016-08-11 03:28:41

就像这样:https://jsfiddle.net/aq8nw21f/

这段代码使用CSS相邻兄弟选择器,以及: first - of -type来获取列表中第一项的边缘大小写。

代码语言:javascript
复制
#container > div:first-of-type, .type-1 + .type-2, .type-2 + .type-1 {
  color: red;
}
代码语言:javascript
复制
<div id="container">
    <span>If you used :first-child, the div below this would not highlight.</span>
    <div class="type-1">Yes</div>
    <div class="type-1">No</div>
    <div class="type-1">No</div>
    <div class="type-2">Yes</div>
    <div class="type-1">Yes</div>
    <div class="type-1">No</div>
    <div class="type-2">Yes</div>
    <div class="type-2">No</div>
    <div class="type-1">Yes</div>
</div>

票数 5
EN

Stack Overflow用户

发布于 2016-08-11 03:42:58

和一个没有TW80000的CSS解决方案那么引人注目的JS解决方案:

代码语言:javascript
复制
var els = Array.from(document.querySelectorAll('div[class^="type-"]'));

console.log(els.filter(function(el, index) {
  return index === 0 || !el.classList.contains(els[index - 1].classList.item(0));
}));
代码语言:javascript
复制
<div class="type-1">1</div>
<div class="type-1">2</div>
<div class="type-1">3</div>
<div class="type-2">4</div>
<div class="type-1">5</div>
<div class="type-1">6</div>
<div class="type-2">7</div>
<div class="type-2">8</div>
<div class="type-1">9</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38881898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档