javascript - 有没有办法根据单个值在 html 元素的多个数据属性中搜索数组?

标签 javascript jquery

我有一个在数据属性中使用数组的 html 元素

<div data-area='["North America", "United Kingdom"]'>Test</div>

我有多个属于不同“事物”的数据属性

<div data-area='["North America", "United Kingdom"]' data-job='["Programmer","Scientist"]'>test</div>

如何根据 1 个值搜索整个元素的所有数据属性标签?

我正在尝试使用选择器而不是遍历每个数据属性,这可能吗?

这是一个例子加上我尝试过的 fiddle 。

// search all data attributes of a div element that contains the given value and apply a hidden class
// this should search every data attribute for "Programmer"
$('[data-*="Programmer"]').addClass('hidden');

http://jsfiddle.net/pWdSP/1/

最佳答案

我只能想到这个解决方案:

$('body *').addClass(function() {
    var data = $(this).data();
    for (var i in data) if (data.hasOwnProperty(i)) {
        if (data[i].indexOf('Programmer') > -1) {
            return;
        }
    }

    return 'hidden';
});

http://jsfiddle.net/pWdSP/4/

它不是最优的,因为它遍历所有 DOM 节点,但我没有看到其他方法来选择具有 data-* 属性的所有节点。

如果有一些关于应该检查哪些节点的更精确的标准 - 强烈建议相应地更改选择器(而不是 body *)

关于javascript - 有没有办法根据单个值在 html 元素的多个数据属性中搜索数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17202581/

相关文章:

javascript - 如何使用 DOM 通过其中的数据查找 XML 元素?

javascript - 选择多次显示的菜单

javascript - Ctrl 选择多个项目并通过表单发布访问

javascript - 如何将javascript绑定(bind)到所有相关元素?

javascript - 根据点击切换不同的文本

jquery - 按行号和列号选择表格中的任意单元格

javascript - JSON 解析问题

javascript - JQuery Org Chart with Jquery library [dependency] 3.1.0 正在运行,但不适用于 1.11.1 版本

javascript - Handsontable - 根据单元格值自定义渲染器

javascript - FB 分享按钮在页面加载时消失