【问题标题】:What does selector with brackets match? :not(a)[routerLink]带括号的选择器匹配什么? :not(a)[routerLink]
【发布时间】:2017-05-11 00:01:12
【问题描述】:

这是一个用于匹配routerLink 指令的选择器。

我知道:not(a) 匹配任何不是a 元素的元素,但[routerLink] 部分是什么意思?

【问题讨论】:

  • 你想做什么?到目前为止你尝试了什么?
  • @anshuVersatile:他试图理解选择器的含义。
  • 你没有在开场白中回答自己吗?
  • @BoltClock,我想我已经把自己扭成了一个结。这些是否相同::not(a)[routerLink] vs :not(a[routerLink])
  • @Michael_B: 不。:not(a)[routerLink]) 永远不会匹配 a 元素,:not(a[routerLink]) 将匹配没有属性的 a 元素(在 selectors-4 配置文件中)。如果提问者说:not(a)[routerLink] 匹配特定的a 元素,那么有些不对劲。

标签: css angular css-selectors


【解决方案1】:

在您的代码中 -- :not(a)[routerLink] -- 您的意思是:选择除锚点之外的所有包含 routerLink 属性的元素

方括号 ([]) 表示属性选择器。

<div class="somevalue">

您可以像这样定位上面的元素:

[class] { background-color: red; }

它匹配所有具有class 属性的元素。

查看此表了解更多详情: https://www.w3.org/TR/css3-selectors/#selectors


感谢@BoltClock 区分两个看起来相似但不同的选择器:

  • :not(a)[routerLink]) 永远不会匹配 a 元素

  • :not(a[routerLink]) 将匹配没有该属性的 a 元素。 (请注意,:not() 伪类中的复合选择器从选择器 4 开始可用。)

【讨论】:

  • 因此,在我的示例中,:not(a)[routerLink] 匹配存在routerElement 的任何元素(元素除外)。这是有道理的,但是为什么当我将 routerLink 指令放在 a 元素指令上时仍然有效(意味着 Angular 无论如何都匹配它)
  • :not(a)[routerLink]github.com/angular/angular/blob/master/modules/%40angular/… 中使用的实际选择器
  • 谢谢您的好先生!我想这与 Angular 内部的工作方式有关。
  • 如果你像[routerLink]="/somePath"这样插入routerLink值,当它被[]包裹时,你如何选择属性?好像没用。
  • 发现你需要使用 ng-reflect-router-link 而不是 routerLink 所以它看起来像::not(a)[ng-reflect-router-link]
猜你喜欢
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 2010-09-20
相关资源
最近更新 更多