Javascript jQuery通过数据属性选择DOM元素,其中包含多个标识符

Javascript jQuery通过数据属性选择DOM元素,其中包含多个标识符,javascript,jquery,html,Javascript,Jquery,Html,注意:这不是按数据属性查询的基本问题 我遇到的问题是,我有这样一些元素: <div data-step="1, 4"> 基本上给出了(为了示例,4)我如何轻松查询选择器以出去抓取[data step=“1,4”] 我所能想到的只是一个循环,它遍历每个数据步骤,去掉所有内容,并查看是否有匹配项。有可能更简单的方法吗?~=将查找具有属性的元素,该属性的值包含给定的单词,并由空格分隔。在你的情况下也有效 $('[data-step~="4"]') *=将查找具有包含给定子字符串的值的属

注意:这不是按数据属性查询的基本问题

我遇到的问题是,我有这样一些元素:

<div data-step="1, 4">
基本上给出了(为了示例,4)我如何轻松查询选择器以出去抓取
[data step=“1,4”]


我所能想到的只是一个循环,它遍历每个数据步骤,去掉所有内容,并查看是否有匹配项。有可能更简单的方法吗?

~=
将查找具有属性的元素,该属性的值包含给定的单词,并由空格分隔。在你的情况下也有效

$('[data-step~="4"]')
*=
将查找具有包含给定子字符串的值的属性的元素

$('[data-step*="4"]')

您也可以使用
过滤器
解决方案:

var search = 4;
$("[data-step]").filter(function() {
    return $.inArray("" + search, $(this).data("step").split(/,\s*/)) !== -1;
});

您需要使用*before=它将返回包含子字符串“value”的所有数据步骤
$(“[data step*=”value“]”)

如果可以将数据步骤属性更改为用空格分隔,则可以使用$(“[data step*='4']”)。@ajshort似乎是这里最简单的解决方案!幸运的是,我能够改变这一点,更容易处理这种方式。干杯我怎么不知道
~=
!!属性包含单词选择器,非常好。这很好用!令我惊讶的是,如果我只做
~=4
,我就不会做类似
[data step=14]
的事情。非常感谢!重要的是要知道,所提供的选择器分别不适用于
data step=“1,4,5”和
data step=“1,44”
等属性。@VisioN:
*=
将适用于
data step=“1,4,5”
,如果OP理解正确,则查找
44
不是OP想要的。非常好!出于某种原因,我得到了
未捕获的TypeError:object1没有方法“split”
,直到我将其更改为
.attr('data-step')
。但这也非常有效@似乎您使用的是旧版本的jQuery=)
1.7.2
仍然是:/希望很快升级!
var search = 4;
$("[data-step]").filter(function() {
    return $.inArray("" + search, $(this).data("step").split(/,\s*/)) !== -1;
});