也许我错过了一些东西,但它们看起来很相似。例如,如果您使用...
a[alt~="thumb"]
或者...
a[alt*="thumb"]
我可以将选择范围缩小到不同的范围吗?我的理解是 ~ 在引号中为您提供部分匹配,而 * 为您提供部分匹配。我将稍微修改一下代码,但由于我在这里找不到有关该主题的问题,因此我认为无论哪种方式它都会成为一个很好的话题。
也许我错过了一些东西,但它们看起来很相似。例如,如果您使用...
a[alt~="thumb"]
或者...
a[alt*="thumb"]
我可以将选择范围缩小到不同的范围吗?我的理解是 ~ 在引号中为您提供部分匹配,而 * 为您提供部分匹配。我将稍微修改一下代码,但由于我在这里找不到有关该主题的问题,因此我认为无论哪种方式它都会成为一个很好的话题。
从 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']
匹配两者。
[att~=value]
是一个包含单词选择器。
所以[alt="foo"]
选择器会匹配<a alt="foo bar">
但不会匹配<a alt="foobar">
。
[alt*="foo"]
不过两者都会匹配,因为这不会区分单词或其他内容。只要它在值中,它就会命中。