仅两个类的CSS选择器

时间:2018-12-24 12:34:10

标签: css css3 css-selectors

我正在寻找某种CSS选择器,该选择器只会从具有这两个特定类的表中选择某些单元格,而没有其他选择。这是一个更加清晰的示例。

因此,在此表中,我想从行中选择单元格A和D进行样式设置,但是选择它们的唯一可区分方法是它们除了.abc和.xyz之外没有其他任何类。因此,基本上我需要筛选出具有其他任何类(即.def,.ghi)的单元格。

export function wrap<T, R>(
  operator: OperatorFunction<T, R>,
) => (source: Observable<TaggedValue<T>>) => Observable<TaggedValue<R>> {
  return source => {
    let metadata: { stepId: number; streamId: number; valueId: number };

    return source.pipe(
      tap(
        ({ valueId, stepId, streamId }) =>
          (metadata = { valueId, streamId, stepId: stepId + 1 }),
      ),
      dematerialize(),
      operator,
      materialize(),
      map(x => Object.assign(x, metadata, { timestamp: Date.now() })),
    );
  };
}

现在我知道我可以使用not选择器来解决这个问题,但是这些类是从外部源注入到表中的,可以添加新的类,我真的不想一直添加到不断增长的类列表中忽略。

<tr>
  <td class="abc xyz">A</td>
  <td class="abc xyz def">B</td>
  <td class="abc xyz ghi">C</td>
  <td class="abc xyz">D</td>
</tr>

因此,如果有人可以将我的正确方向指向任何有帮助的地方,将不胜感激。

2 个答案:

答案 0 :(得分:4)

您可以考虑使用属性选择器,但要注意空格和顺序:

[class="abc xyz"],
[class="xyz abc"] {
  color:red;
}
<table>
<tr>
  <td class="abc xyz">A</td>
  <td class="abc xyz def">B</td>
  <td class="abc xyz ghi">C</td>
  <td class="abc xyz">D</td>
  <td class="xyz abc">D</td>
  <td class="abc xyz ">this will fail</td>
</tr>
</table>

如果您可以添加一些JS,则可以使用trim

来避免空格问题

var td=document.querySelectorAll('td');
for(var i=0;i<td.length;i++)
  td[i].className=td[i].className.trim();
[class="abc xyz"],
[class="xyz abc"] {
  color:red;
}
<table>
<tr>
  <td class="abc xyz">A</td>
  <td class="abc xyz def">B</td>
  <td class="abc xyz ghi">C</td>
  <td class="abc xyz">D</td>
  <td class="xyz abc">D</td>
  <td class="abc xyz ">this will be good</td>
</tr>
</table>

答案 1 :(得分:-1)

[class="abc xyz"], [class="xyz abc"] { … }