从html元素中删除重复项

时间:2013-08-07 06:37:17

标签: javascript jquery

从这里去除葡萄的最佳方法是什么?有很多方法可以从简单数组中删除重复项,但这将是一个带有html元素的数组

 <div class="fruit">
      grapes
 </div>
 <div class="fruit">
      bananas
 </div>
 <div class="fruit">
      grapes
  </div>

我尝试过使用像

这样的东西
 $('.fruit').each(function () {
      $('.fruit:has("' + $(this).text() + '"):gt(0)').remove();  
 });

6 个答案:

答案 0 :(得分:3)

尝试

var obj = {};
$('.fruit').each(function(){
    var text = $.trim($(this).text());
    if(obj[text]){
        $(this).remove();
    } else {
        obj[text] = true;
    }
})

演示:Fiddle

答案 1 :(得分:2)

:has需要一个元素选择器,而:contains需要一个字符串

请参阅http://api.jquery.com/contains-selector/

所以这应该可以解决问题:

 $('.fruit').each(function () {
      $('.fruit:contains("' + $(this).text() + '"):gt(0)').remove();  
 });

小提琴:http://jsfiddle.net/kam7E/

答案 2 :(得分:0)

http://jsfiddle.net/S3wXM/1/

假设您只想删除其中一个重复项。

使用contains,就像上面的答案一样,但实现略有不同。

$($("div:contains('grapes')")[0]).remove();

http://api.jquery.com/jQuery.unique/ - 这也可能对您有用。

答案 3 :(得分:0)

var uniqueFruits = [];
$(".fruit").each(function(i,e){
    var thisFruit = $.trim($(e).text());
    if(uniqueFruits.indexOf(thisFruit) == -1)
        uniqueFruits.push(thisFruit);
    else
        $(e).remove();
});

http://jsfiddle.net/a7E9e/

答案 4 :(得分:0)

jsFiddle这里:http://jsfiddle.net/THEtheChad/UKRwf/

var found = {};
var $unique_fruits = $('.fruit').filter(function(){
   var data = this.innerHTML.trim();

   if(!found.hasOwnProperty(data)) return found[data] = true;
});

答案 5 :(得分:-1)

以下是这方面的工作小提琴: -

http://jsfiddle.net/HwUUs/1/

$( "div:contains('grapes')" ).remove();