Javascript 如何查找具有特定数据属性值的元素

Javascript 如何查找具有特定数据属性值的元素,javascript,jquery,Javascript,Jquery,我根据数据属性过滤图像,每个过滤数据属性可以有几个标记值。要基于一个数据属性值匹配元素,可以执行以下操作: $('.image-container').filter('[data-places="Canada"]').css('display','none'); 但当我尝试使用空格分隔的列表时,它不起作用: <div class="image-container" data-places="Nunavut Canada">...</div> 。。。 在jquery中

我根据数据属性过滤图像,每个过滤数据属性可以有几个标记值。要基于一个数据属性值匹配元素,可以执行以下操作:

$('.image-container').filter('[data-places="Canada"]').css('display','none');
但当我尝试使用空格分隔的列表时,它不起作用:

<div class="image-container" data-places="Nunavut Canada">...</div>
。。。
在jquery中是否有任何方法可以通过数据属性集合中的值进行选择

我能想到的另一个选择是循环通过一个选定元素的数组,但是我已经通过ajax在一个无限滚动中加载了图像,所以这个数组在某个时候会非常庞大。我也对非jquery解决方案持开放态度。

您必须在这种情况下使用

$('.image-container').filter('[data-places~="Canada"]').css('display','none');
此处不能使用属性等于选择器,因为您正在搜索属性中的特定单词。您也可以使用属性包含选择器,但这将选择具有类似
data places=“NunavutCanada”>
属性的元素。

您必须在该上下文中使用

$('.image-container').filter('[data-places~="Canada"]').css('display','none');

此处不能使用属性等于选择器,因为您正在搜索属性中的特定单词。您也可以使用attribute contains selector,但这将选择具有类似
data places=“NunavutCanada”>
属性的元素。

您最好为国家设置一个数据属性,为地区/州设置另一个数据属性。实际上,可以有任何级别的地名,我不提前知道,因为它都是动态的。我设置它的方式确实有道理。现在不要这样做,不要使用数据属性。因为html5还没有标准化,所以它不是跨浏览器的。如果您确实想使用jquery元数据插件,请不要使用下面提供的解决方案,这只会给您带来问题。编辑哦,你已经努力了,那你就要努力学习了;)@vove你指的是哪些浏览器,IE6/7还是什么?你发布的链接是5yo(编辑:我看到它指的是无效的HTML属性,但现在所有浏览器都支持数据-*1)。你最好为国家设置一个数据属性,为地区/州设置另一个数据属性。实际上,可以有任何级别的地名,我不提前知道,因为它都是动态的。我设置它的方式确实有道理。现在不要这样做,不要使用数据属性。因为html5还没有标准化,所以它不是跨浏览器的。如果您确实想使用jquery元数据插件,请不要使用下面提供的解决方案,这只会给您带来问题。编辑哦,你已经努力了,那你就要努力学习了;)@vove你指的是哪些浏览器,IE6/7还是什么?你发布的链接是5yo(编辑:我看到它指的是无效的HTML属性,但现在所有浏览器都支持数据-*1)这和
$('.image container[data places~=“Canada”]')有什么区别?@dandavis选择属性等于特定值但不是单词的元素。同时,
~=
选择属性值由空格分隔的元素,并匹配由空格分隔的任何一个值。请阅读此处了解更多信息。对于遇到类似问题的人,“:not([data places~=“Canada”])选择相反的结果。@KatharineOsborne很高兴知道你正在分享你所获得的知识。这与
$('.image container[data places~=“Canada”]”有什么区别
?@dandavis选择属性等于特定值但不是单词的元素。同时,
~=
选择属性值由空格分隔的元素,并匹配由空格分隔的任何一个值。请阅读此处了解更多信息。对于遇到类似问题的人来说,“:not([data places~=“Canada”])选择了相反的结果。@KatharineOsborne很高兴知道你正在分享你所获得的知识。