JQuery严格平等' $'选择

时间:2018-02-21 11:10:45

标签: javascript jquery

我在html中呈现的元素中的自定义数据属性

<div my-custom-attrib="1".../>
<div my-custom-sttrib="2".../>

现在在JQuery中我想根据自定义属性值在元素之间进行过滤 因为我正在做这样的JQuery代码:

var value = GetValueOfCustomAttribWeDontNeed() //-> This function returns an Int Value
$('[my-custom-attrib !="'+value+'"]').foreach(...)

这时我正在使用这个&#39;!=&#39; (或&#39; ==&#39;)然后它的工作完美, 但是当我试图使用严格的平等(&#39; ===&#39;或&#39;!==&#39;)时,它的抛出错误表示表达式无法识别。

$('[my-custom-attrib!=="'+value+'"]').foreach(...)
Syntax error, unrecognized expression: [my-custom-attrib!=="2"]]

我的问题是:甚至可以在&#39; $&#39;中使用严格的平等。像这样的选择器还是有任何其他方式,或者我们只能在&#39; $&#39;中使用正常的相等运算符。选择?

2 个答案:

答案 0 :(得分:3)

jQuery选择器基于CSS选择器。 jQuery添加了一些新的伪选择器(如:input),但它仍然是CSS语法。

CSS属性选择器不支持严格相等,因为在CSS世界中,一切都是字符串。

More information on CSS attribute selectors

答案 1 :(得分:0)

不,你不能这样做。您使用的选择器是CSS选择器,其属性选择器!=的语法与Javascript比较运算符无关。如果您希望能够使用Javscript,则需要选择属性为[my-custom-attrib]的所有元素,然后过滤必要的元素:

$('[my-custom-attrib]').filter(function () {
  return $(this).attr('my-custom-attrib') !== value
}).each(function () {
  // ...
})
相关问题