【问题标题】:How exactly is [att~=val] different from [att*=val] in CSS Attribute Selectors?CSS 属性选择器中的 [att~=val] 与 [att*=val] 究竟有何不同?
【发布时间】:2012-05-04 13:18:04
【问题描述】:

也许我遗漏了一些东西,但它们看起来很相似。例如,如果您使用...

a[alt~="thumb"]

或者...

a[alt*="thumb"]

我可以将选择范围缩小到不同的范围内吗?我的理解是 ~ 在引号中为您提供部分匹配,而 * 为您提供部分匹配。我将稍微修改一下代码,但由于我在此处找不到有关该主题的问题,因此认为无论哪种方式都会成为一个很好的主题。

【问题讨论】:

    标签: html css css-selectors


    【解决方案1】:

    来自 JQuery 帮助(支持标准选择器):

    a[alt~="thumb"]
    

    描述:选择具有指定属性的元素 包含给定单词的值,由空格分隔。这个选择器 将测试字符串与属性值中的每个单词匹配, 其中“单词”定义为由空格分隔的字符串。这 如果测试字符串完全等于任何一个,则选择器匹配 单词。

    a[alt*="thumb"]
    

    描述:选择具有指定属性的元素 包含给定子字符串的值。这是最慷慨的 与值匹配的 jQuery 属性选择器。它会 如果选择器的字符串出现在 元素的属性值。将此选择器与 Attribute 进行比较 包含单词选择器(例如 [attr~="word"]),它更多 在许多情况下都适用。

    基本上,选择器~= 仅在找到被空白包围的值时才匹配。选择器*= 匹配如果在任何地方找到值。

    <div alt='heading navigation'>
    <div alt='head'>
    

    div[alt~='head'] 将仅匹配第二个 div,但 div[alt*='head'] 将匹配两者。

    【讨论】:

    【解决方案2】:

    [att~=value] 是一个包含单词的选择器。

    所以[alt="foo"] 选择器将匹配&lt;a alt="foo bar"&gt;,但不会匹配&lt;a alt="foobar"&gt;

    [alt*="foo"] 将同时匹配两者,因为这不会区分单词或其他内容。只要它在值中,它就会命中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      相关资源
      最近更新 更多