从这里去除葡萄的最佳方法是什么?有很多方法可以从简单数组中删除重复项,但这将是一个带有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();
});
答案 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();
});
答案 2 :(得分:0)
假设您只想删除其中一个重复项。
使用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();
});
答案 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)