jQuery 选择器中的波浪号

Posted

技术标签:

【中文标题】jQuery 选择器中的波浪号【英文标题】:Tilde in jQuery selector 【发布时间】:2013-02-03 03:26:48 【问题描述】:

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

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

谁能告诉我这个例子中波浪号的目的是什么?我以前没有遇到过,也无法在网上找到任何参考。

【问题讨论】:

浏览 api.jquery.com/category/selectors 导致一到 this 这不是 JavaScript 运算符,而是 jQuery 选择器。 API 有关于它们的an entire page。 【参考方案1】:

平铺用作选择器

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

这根本不是 JavaScript 运算符。

更多来自文档:

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

例如:

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

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

详情请参阅here

【讨论】:

值得注意的是,这纯粹是 JQUERY 功能,而不是 Javascript 所固有的。就股票 JS 而言,OP 对波浪号的作用的理解是正确的。【参考方案2】:

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

由于该字符串被传递给 jQuery 函数,而且它看起来不像是一段 html,它是一个 selector。

具体是attribute selectors之一:

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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

如果您想知道

之间的区别
[class~="foo"]

[class*="foo"]

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

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

【讨论】:

以上是关于jQuery 选择器中的波浪号的主要内容,如果未能解决你的问题,请参考以下文章

css选择器 ~ (波浪号)、+(加号)、>(大于号)的用法解析和举例

输入名称选择器中的jquery变量[关闭]

为啥 jQuery 3 不能识别属性选择器中的“#”字符?

css选择器易混符号(~波浪号、+加号、>大于号)

jQuery 选择器中的变量

如何处理jQuery选择器中的特殊符号