我在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;中使用正常的相等运算符。选择?
答案 0 :(得分:3)
jQuery选择器基于CSS选择器。 jQuery添加了一些新的伪选择器(如:input
),但它仍然是CSS语法。
CSS属性选择器不支持严格相等,因为在CSS世界中,一切都是字符串。
答案 1 :(得分:0)
不,你不能这样做。您使用的选择器是CSS选择器,其属性选择器!=
的语法与Javascript比较运算符无关。如果您希望能够使用Javscript,则需要选择属性为[my-custom-attrib]
的所有元素,然后过滤必要的元素:
$('[my-custom-attrib]').filter(function () {
return $(this).attr('my-custom-attrib') !== value
}).each(function () {
// ...
})