3

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

a[alt~="thumb"]

或者...

a[alt*="thumb"]

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

4

2 回答 2

4

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

a[alt~="thumb"]

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

a[alt*="thumb"]

描述:选择具有指定属性且值包含给定子字符串的元素。这是匹配值的最慷慨的 jQuery 属性选择器。如果选择器的字符串出现在元素属性值中的任何位置,它将选择一个元素。将此选择器与 Attribute Contains Word 选择器(例如 [attr~="word"])进行比较,后者在许多情况下更合适。

基本上,~=只有当值被空格包围时,选择器才会匹配。*=如果在任何地方找到该值,则选择器匹配。

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

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

于 2012-05-04T05:17:20.493 回答
1

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

所以[alt="foo"]选择器会匹配<a alt="foo bar">但不会匹配<a alt="foobar">

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

于 2012-05-04T05:18:04.540 回答