jQuery 选择器仅获取每个值的第一次出现

标签 jquery jquery-selectors each no-duplicates jquery-filter

我有一个像这样的 HTML:

<div data-value="a"></div>
<div data-value="b"></div>
<div data-value="c"></div>
<div data-value="d"></div>
<div data-value="a"></div>
<div data-value="d"></div>
<div data-value="e"></div>

我想使用 jQuery 来选择具有不同 data-value 属性的所有 div。

这是我的尝试:

$( document ).ready(function() {
    $('div[data-value]').each(function(){
        var value = $(this).data("value");
        console.log(value);
    });
});

这当然会打印出所有出现的情况:a, b, c, d, a, d, e

相反,我只需要打印每个值的第一次出现:a、b、c、d、e

是的,我可以使用一个数组将元素放入其中并检查它是否已经在那里并执行我的操作,但我正在寻找紧凑而优雅的 jQuery 代码,例如选择器或过滤器函数或其他东西。有什么想法吗?

Fiddle

最佳答案

I would like to select with jquery all the div with different data-value attribute.
....
like a selector or a filter function or something
....

我假设其他人没有阅读这个问题,并且您确实想选择具有唯一数据属性的元素,而不仅仅是获取包含这些属性值的数组。

过滤器似乎是这里的正确方法,检查当前迭代的元素是否是第一个具有该data-value等的元素

$('div[data-value]').filter(function(_, x) {
    return $('div[data-value="' + $(x).data('value') + '"]').get(0) === this;
});

FIDDLE

关于jQuery 选择器仅获取每个值的第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24776260/

相关文章:

javascript - 不带参数调用 jQuery 的 ajaxSetup 有副作用吗?

javascript - 外部 jQuery 文件循环跳过第一个或最后一个项目

javascript - Jquery语法错误,无法识别的表达式:

jquery - .each() 跳过第一项

javascript - 检查表单以查看是否有任何输入对 jQuery each 方法有值(value)

jquery - 具有水平居中固定宽度和高度 DIV 的响应式布局

javascript - 附加到 DOM 后如何访问图像

javascript - 根据 routeProvider 更改值

jquery - jquery 中的选择器 - 获取 rel 属性

jquery - 带有空格的类的 querySelector 语法