如何删除重复的div部分?

时间:2011-01-14 21:52:50

标签: jquery

我将数据输出附加到此div部分。

在此<div>部分中,有<div>个部分是重复的。如何删除后面的副本?

要移除的示例编码:

<div id=EXTRACTION_a>something ...</div>
<div id=EXTRACTION_b>something ...</div>
<div id=EXTRACTION_c>something ...</div>
<div id=EXTRACTION_a>something ...</div>
<div id=EXTRACTION_b>something ...</div>
<div id=EXTRACTION_a>something ...</div>
<div id=EXTRACTION_c>something ...</div>
<div id=EXTRACTION_d>something ...</div>
<div id=EXTRACTION_a>something ...</div>

我想保留a,b,c,d的第一次出现并删除其余部分。

我尝试了这种编码但没有工作:

            var count = -1;
            \$("div[id^='EXTRACTION_']").each(function(){
               count ++;
               var ids = \$('[id='+this.id+']');
               var originaldivsectin = \$(this);

               var count2 = 0;
               \$("div[id^='EXTRACTION_']").each(function(){
                    count2 ++;
                    var copyids = \$('[id='+this.id+']');
                    var dupdivsection = \$(this);
                    if (count != count2 && copyids.length>1 && ids[count]==copyids[count2])
                    {
                        dupdivsection.remove();   
                    }
               });

               // if(ids.length>1 && ids[0]==this)
               // {  
               //       \$(this).remove();
               //       alert('Multiple IDs #'+this.id);
               // }
            });

注意:jquery对我来说仍然是一种新语言

3 个答案:

答案 0 :(得分:7)

编辑:根据您的更新,我发现您只想根据可能匹配的ID删除某些元素,并且每种类型可能有多个匹配。

您可以这样做:

Click here to test a working example. (jsFiddle)

var found = {}; // Container to hold each unique ID that we find.

$('div[id^=EXTRACTION_]').filter(function() {
    var ending = this.id.replace("EXTRACTION_","");
    if( found.hasOwnProperty( ending ) ) {
        return this;
    } else {
        found[ ending ] = ending;
    }
}).remove();

我们基本上使用attribute-starts-with-selector(docs)选择所有以EXTRACTION_开头的元素。 (我还将div添加到选择器中。如果它们不是全部divs,请删除它。)

然后我们filter()(docs)他们。在过滤器中,首先我们提取ID的唯一部分。然后我们检查该ID是否是我们创建的名为found的对象的属性。如果不是,请将其添加为属性。如果它已经是属性,那意味着我们已经遇到过它,因此我们执行了return this,这将导致.filter()将该元素保留在集合中。

所以最后,我们只留下那些重复的元素,然后我们可以做remove()(docs)


<强>原始

这会照顾你的副本。

$( 'div > div' ) .remove()


答案 1 :(得分:3)

在我正在研究“看到的”jQuery解决方案的网站上没有用。我用的是这个:

HTML

<div id="t" class="resevt">2</div>
<div id="t" class="resevt">tues</div>
<div id="w" class="resevt">wed</div>
<div id="th" class="resevt">4</div>
<div id="th" class="resevt">thurs</div>
<div id="f" class="resevt">fri</div>
<div id="count"></div>


的jQuery

var ids = [];
$('*').each(function() {
    if (this.id && this.id !== '') {
        if (ids[this.id]) {
            $(this).remove();
        } else {
            ids[this.id] = this
        }
    }
});

答案 2 :(得分:0)

我用过这个:

            // REMOVING SECOND DUPLICATE SECTIONS OF DIVS HERE 
            \$("div[id^='EXTRACTION_']").each(function(){
               var ids = \$('[id='+this.id+']');
               if(ids.length>1 && ids[0]==this)
               {  
                     \$(ids[1]).remove();
               }
            });