我可以选择具有类(任何类)的元素吗?

时间:2019-06-07 15:09:06

标签: css css-selectors

是否有一个选择器来选择具有与<a href="www.website.com/de/" id="language"> <script>document.getElementById('language').setAttribute('href', '/de'+document.location.pathname);</script> 不同的任何类的元素?

我正在使用Adobe DTM定义规则和事件,这些规则和事件将触发Adobe Analytics中的特定请求。每次用户单击标记中具有:not([class])属性的元素时,都会激活我的规则之一,例如,以下元素将触发该规则:

data-analytics-linkname

我知道:has()伪类选择器,但是它似乎与任何浏览器都不兼容。

只有具有已定义类(<a href="www.google.com" target="_self" class="btn btn-default" data-analytics-linkname="visit_Google">Visit Google</a> <a href="www.google.com" target="_self" data-analytics-linkname="visit_Google">Visit Google</a> )的链接才应触发该类。但是,我真的不想在规则中指定类btn,因为我想对它们尽可能灵活,并且我不想每次开发人员创建新资产时都创建一个类。

2 个答案:

答案 0 :(得分:2)

您可以使用属性存在选择器[...]选择具有特定属性的所有元素。如果指定a[class],则将选择所有a属性为 class元素。

a[class] {
  color: red;
}
<a class="btn">Button 1</a>
<a class="btn2">Button 2</a>
<a>Button 3</a>

答案 1 :(得分:0)

答案很简单,只需[class]或类似[class]:not(body)即可。

div {
  width: 100px;
  height: 20px;
  border: solid red 2px;
}

[class]:not(body) {
  background: orange;
}
<div class='t1'></div>
<div class='t2'></div>
<button class='t3'>button 1</button>
<div></div>
<button>button 2</button>

您的问题没有多大意义。如果您不想使用btn类作为选择器来保持尽可能的灵活性,并且不想每次开发人员创建新资产时都创建一个类,则只需严格创建并使用另一个类为此目的。