如何使用Javascript/Jquery为每个唯一的属性值选择第一个匹配的元素

How to select the first matched element for each unique attribute value with Javascript/Jquery?

本文关键字:属性 选择 元素 第一个 唯一 Javascript 何使用 Jquery      更新时间:2023-09-26

我正在开发应用程序中的一个功能。我使用Javascript将指示符附加到元素中。我向需要指示符的元素添加了一个类,但有些元素被多次加载,导致显示多个指示符,并且我只想每个元素显示一个指示符。每个有这样一个类的元素都有一个具有唯一数据连接id的属性(只是当它多次加载到页面上时,它不再是唯一的)。

现在,如何只将指示符附加到每个唯一属性值的第一个匹配?这适用于一个:

$(".connector[data-connect-id = '2']").first().append("<div class='indicator'></div>");

但这只适用于一个指定的数据连接id。它应该查找所有唯一的数据连接id,但我该怎么做呢?

听起来您想在不事先知道值的情况下,旋转文档并将指示符div添加到具有给定data-connect-id值的第一个元素。我想不出比循环更优雅的了:

var seen = {};
$(".connector[data-connect-id]").each(function() {
    var connector = $(this);
    var id = connector.attr("data-connect-id");
    if (!seen[id]) {
        connector.append(/*...*/);
        seen[id] = true;
    }
});

我的意思是,可以提前收集所有ID,然后使用first示例进行循环,但效率较低。