Javascript jQuery选择数组数据属性中包含指定项的元素

Javascript jQuery选择数组数据属性中包含指定项的元素,javascript,jquery,custom-data-attribute,Javascript,Jquery,Custom Data Attribute,我有一个元素,我想给它一个数据属性,它包含一系列值,即数组。然后,我希望能够根据该系列中的任何值来选择它。大概是这样的: <div id="example" data-my-series='["foo", "bar"]'></div> 然后我希望选择它,因为它里面有“foo”。不过,我真的不知道该怎么办。我知道如果我不采用这种方法,我会使用$('div[data my series=“foo”]”),但显然情况并非如此。有什么建议吗 编辑:还有,我怎样才能实现这一点

我有一个元素,我想给它一个数据属性,它包含一系列值,即
数组
。然后,我希望能够根据该系列中的任何值来选择它。大概是这样的:

<div id="example" data-my-series='["foo", "bar"]'></div>

然后我希望选择它,因为它里面有
“foo”
。不过,我真的不知道该怎么办。我知道如果我不采用这种方法,我会使用
$('div[data my series=“foo”]”)
,但显然情况并非如此。有什么建议吗

编辑:还有,我怎样才能实现这一点的相反?i、 例如,选择一个在其
数据my series
中没有
“foo”
的元素

$( "[data-my-series*='foo']" )

给你

最简单的方法与您所做的非常类似,只需使用属性Contains选择器而不是equals选择器:
$('div[data my series*=“foo”])

您可以在此处查看更多信息:

编辑:

要回答下面的注释,您可以在jQuery中使用层选择器,因此请查看“:not()”选择器。用法是
$('div:not([data my series*=“foo”]))
。 确保不要将
div
放在
:not
中。此外,您可能还希望在
:not
之外添加
[data my series]
,以确保只选择具有该数据属性的div

最终产品:
$('div[data my series]:不是([data my series*=“foo”))
小心。接受的答案将进行子字符串匹配,并可能导致您不打算进行的匹配

$(“[data my series*=“foo”]”)
不仅会在结果中找到
,还会在结果中包含

您应该使用~而不是*来进行整词匹配
$('[data my series~=“foo”]')
。这将导致匹配
foo
,但不会匹配
foobar

如果要在数据字符串中包含多个单词,请使用空格分隔它们:

这个。另外,作为补充说明,如果使用jQuery
.data()
方法更改这些值,则此方法将不再适用于选择具有更新值的元素。太棒了!谢谢你的链接。我现在怎么做相反的事情呢?也就是说,选择其中没有
foo
的内容。我在你链接的jQuery网站上没有看到类似的内容。我在原始答案的基础上添加了这个问题的答案。小心。本例将进行简单的字符串匹配,可能会导致您不希望的匹配<代码> $([数据我的系列*=“fo”])/<代码>将不只是查找<代码> <代码>,但也将包含<代码> <代码>。您可以提供一个示例来说明为什么这是正确的。我将接受您的答案。请考虑以下内容:<代码> <代码>使用<代码> $('[数据我的系列*=“男人”])将同时匹配
div.men
div.women
而不仅仅是
div.men
。谢谢,如果您使用空格分隔,这是有意义的。