我正在寻找某种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>
因此,如果有人可以将我的正确方向指向任何有帮助的地方,将不胜感激。
答案 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"] { … }