jQuery选择器中的颚化符

Tilde in jQuery selector

本文关键字:选择器 jQuery      更新时间:2023-09-26

我对Javascript中波浪号函数的理解是,它执行按位非运算(即1变为0,反之亦然;1000变为0111)。然而,我最近开始着手一个现有的项目,我的前任已经包含了很多这样的代码:

var iValuation = $('div[class~="iValuation"]');

有人能告诉我这种情况下波浪号的用途是什么吗?我以前从未见过它,也没能在网上找到任何参考资料。

用作选择器的平铺表示

选择具有带值的指定属性的元素包含由空格分隔的给定单词。

其根本不是JavaScript运算符。

更多来自文档:

此选择器将测试字符串与属性值,其中"单词"定义为由空白。如果测试字符串完全相等,则选择器匹配对任何一个词。

例如:

<input name="man-news" />
<input name="milk man" />
<input name="letterman2" />
<input name="newmilk" />

$('input[name~="man"]')将只选择第二个input,因为其属性namespace分隔。

有关详细信息,请参阅此处

这不是JavaScript运算符。它以字符串形式出现。

由于该字符串被传递给jQuery函数,并且它看起来不像一段HTML,因此它是一个选择器。

特别是其中一个属性选择器:

表示具有att属性的元素,该元素的值是一个以空格分隔的单词列表,其中一个单词恰好是"val"。如果"val"包含空白,它将永远不会表示任何内容(因为单词之间用空格分隔)。此外,如果"val"是空字符串,它将永远不会表示任何内容。

$jQuery选择器函数,它包含一个CSS3选择器字符串:根据CSS3选择器定义,您遇到的选择器选择:

E[foo~="bar"]一个E元素,其"foo"属性值是一个由空格分隔的值组成的列表,其中一个值恰好等于"bar"

在CCD_ 9。因为Tilde被包裹在一个字符串中,所以它不能作为运算符工作。

如果您想知道之间的差异

[class~="foo"]

[class*="foo"]

~将只匹配周围有空格(例如"foo-bar"而不是"foo-1")
*将匹配周围是否有空格(例如"foo-bar"answers"foo-1')

~-属性间隔选择器
*-属性包含选择器