5

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

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

谁能告诉我在这种情况下波浪号的目的是什么?我以前没有遇到过它,也无法在网上找到任何关于它的参考。

4

4 回答 4

11

平铺用作选择器

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

这根本不是 JavaScript 运算符。

更多来自文档:

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

例如:

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

$('input[name~="man"]')将只选择第二个input,因为它的属性由 .name分隔space

详情请看这里

于 2013-02-18T16:22:33.617 回答
3

那不是 JavaScript 运算符。它出现在一个字符串中。

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

特别是属性选择器之一:

表示具有 att 属性的元素,其值为以空格分隔的单词列表,其中一个恰好是“val”。如果“val”包含空格,它永远不会代表任何东西(因为单词是用空格分隔的)。此外,如果“val”是空字符串,它永远不会代表任何东西。

于 2013-02-18T16:23:01.637 回答
3

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

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

DOM. 因为波浪号被包裹在一个字符串中,所以它不能用作运算符。

于 2013-02-18T16:24:41.947 回答
2

如果您想知道两者之间的区别

[class~="foo"]

[class*="foo"]

~将只匹配周围的空格(例如'foo bar'但不匹配'foo-1')
*将匹配我们的周围没有空格(例如'foo bar'和'foo-1')

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

于 2016-11-29T20:10:21.127 回答