jQuery选择器中的波浪符号(Tilde)

5

我认为在 Javascript 中波浪号的作用是执行按位非操作(即 1 变成 0,反之亦然;1000 变成 0111)。然而,最近我开始接手一个已有的项目,我的前任编写了很多类似于以下代码:

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

有人能告诉我在这种情况下波浪号的用途是什么吗?我以前没有遇到过这种情况,也没有找到相关的在线参考资料。

1
浏览http://api.jquery.com/category/selectors/会带你到这个链接:http://api.jquery.com/attribute-contains-word-selector/。 - Blazemonger
这不是JavaScript操作符,而是jQuery选择器。有一个关于它们的 完整页面 在API上。 - Anthony Grist
4个回答

11

Tiled作为选择器表示:

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

这并不是JavaScript运算符。

更多文档:

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

例如:

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

$('input[name~="man"]') 会选择第二个标签,因为它的name属性被空格分隔。

详情请参见 这里


值得注意的是,这纯粹是JQUERY的功能,而不是JavaScript本身固有的功能。就原始的JS而言,OP对波浪号的理解是正确的。 - Ask About Monica

3
如果你对以下内容的区别感到困惑:
[class~="foo"]

并且

[class*="foo"]

~ 只匹配有空格的内容(例如,'foo bar' 但不包括 'foo-1')
* 匹配带或不带空格的内容(例如,'foo bar' 和 'foo-1')

~ - 属性空格选择器
* - 属性包含选择器


3

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

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

具体来说,它是属性选择器之一:

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


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

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

DOM中。因为波浪号被包含在字符串中,所以它不起作用作为运算符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接