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

时间:2013-01-03 22:36:09

标签: javascript jquery html5

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

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

<div data-step="1, 4">

我已经想出了如何逐步完成每个[data-step]并提取1, 4并为它们创建事件等。

假设我正在尝试查询并抓住这个确切的数据步骤,但我得到的只是:4

$('[data-step="4"]') 
// this won't work of course

$('[data-step="1, 4"]')
// obviously this will work, but at this point I'm only given the index
// which will only be ONE of these numbers

基本上给出(例如,4)我如何轻松查询选择器出去并抓住[data-step="1, 4"]

所有我能够想出的是一个循环,它遍历每个数据步骤,去除所有内容并查看是否匹配。有可能更容易吗?

3 个答案:

答案 0 :(得分:4)

~=将找到具有属性的元素,该属性具有包含给定单词的值,由空格分隔。也适用于您的情况。

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

*=将找到具有属性的元素,该属性具有包含给定子字符串的值。

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

答案 1 :(得分:2)

您也可以使用filter解决方案:

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

答案 2 :(得分:0)

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