2010-04-05 62 views
3

说我有下面的HTML:jQuery代码删除与相同内容的所有跨度,但保持一个

<span class="fruit">Apple</span> 
<span class="fruit">banana</span> 
<span class="fruit">Apple</span> 
<span class="fruit">Apple</span> 
<span class="fruit">orange</span> 

我尝试了不同的方法,但它没有工作,我想一个jQuery代码删除所有(。水果)与相同内容的跨越,但保持一个(第一如果可能的话),所以我将结束与以下:

<span class="fruit">Apple</span> 
<span class="fruit">banana</span> 
<span class="fruit">orange</span> 

谢谢

回答

8
$("span.fruit:contains(Apple):not(:first)").remove(); 
+0

我喜欢它,当这个家伙似乎说话选择,而不是写它。大声笑 和当然爱jquery,使这一切如此简单。可以很容易想象一个语音识别软件,你说所有的跨度被删除,并保持一个,只是这样做。呵呵 – XGreen 2010-04-05 01:26:09

+0

这适用于特定情况,但不适用于一般情况。 – Lee 2010-04-06 13:00:54

1
var temp = array[]; 

$(".fruit").each(function(i) { 
    var html = $($this).html(); 
    if($.inArray(html, temp)) { 
     $($this).remove(); 
    } 
    else { 
     temp.push(html); 
    } 

}); 
2
$('span.fruit').each(function(){ 
    return $('span.fruit:contains('+$(this).text()+'):not(:first)').remove(); 
}) 
0
temp = $('span:first').clone(true); 
//remove all the span 
$().html(); 
$().append(temp);