查找所有元素,但按类名删除重复项

时间:2015-06-10 00:46:44

标签: jquery

我的脚本下面有以下片段

.then(function() {debugger})

有时,同一范围a的第2个和第3个实例会添加到网页中。所以我的脚本也复制了那些实例。我需要一种方法来a)找到第一个类名或b)删除重复项。下面是.franchise_0001重复3次的示例。和两次0002。我需要找到所有,然后删除重复,我假设,但不知道如何做到这一点。

那么有没有办法找到所有的跨度a,那么类是同样的删除吗?

$(this).find("span a").each(function () {
                   target.append("<tr><td>" + $(this)[0].outerHTML + "</td><td><a href='#'>TEXT</a></td></tr>");

3 个答案:

答案 0 :(得分:2)

您可以尝试使用像

这样的完成标记
var clazz = {};
$(this).find("span a").each(function () {
    var className = this.className;
    if (clazz[className]) {
        return
    }
    clazz[className] = true;
    target.append("<tr><td>" + this.outerHTML + "</td><td><a href='#'>TEXT</a></td></tr>");
})

答案 1 :(得分:1)

尝试通过在span a内使用span a className填充数组来过滤.map(),将.each()链接到.map()返回的唯一元素数组

    var res = [];
    var arr = $("span a").map(function(i, el) {
        return $.inArray(el.className, res) === -1 
               ? res.push(el.className) 
                 && $("." + el.className + ":first")[0] 
               : null;
    })
    .each(function() {
      target.append("<tr><td>" 
                    + $(this)[0].outerHTML 
                    + "</td><td><a href='#'>TEXT</a></td></tr>")
    });

&#13;
&#13;
var res = [];
var target = $("table tbody");
var arr = $("span a").map(function(i, el) {
    return $.inArray(el.className, res) === -1 
           ? res.push(el.className) 
             && $("." + el.className + ":first")[0] 
           : null;
})
.each(function() {
  target.append("<tr><td>" 
                + $(this)[0].outerHTML 
                + "</td><td><a href='#'>TEXT</a></td></tr>")
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <tbody></tbody>
</table>
<span><a class="franchise_0001"></a></span>
<span><a class="franchise_0002"></a></span>
<span><a class="franchise_0003"></a></span>
<span><a class="franchise_0004"></a></span>
<span><a class="franchise_0005"></a></span>
<span><a class="franchise_0006"></a></span>
<span><a class="franchise_0007"></a></span>
<span><a class="franchise_0008"></a></span>
<span><a class="franchise_0009"></a></span>
<span><a class="franchise_0001"></a></span>
<span><a class="franchise_0001"></a></span>
<span><a class="franchise_0002"></a></span>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

我相信使用eq(0)代替每个人都会这样做。

$(this).find("span a").eq(0)(function () {
               target.append("<tr><td>" + $(this)[0].outerHTML + "</td><td><a href='#'>TEXT</a></td></tr>");