我想检查一个具有相同数据属性的元素是否在jQuery每个循环中存在多次,如果存在多次删除它并且只保留一个具有此数据属性的元素。
我试过这段代码,但似乎没有用,
HTML:
<div class="list" data-productid="2"></div> // KEEP THIS ONE
<div class="list" data-productid="3"></div>
<div class="list" data-productid="2"></div> // REMOVE THIS ONE
<div class="list" data-productid="2"></div> // REMOVE THIS ONE
我在jQuery中的方法:
$('.list').each(function(){
if ( $(this).attr(data-productid).length > 0 ) {
$(this).remove();
}
});
任何想法的人,
谢谢!
答案 0 :(得分:2)
您需要跟踪数组或对象中的每一个。然后,当发现重复时,可以删除它们
var productIds={};
$('.list').each(function(){
var prodId = $(this).attr('data-productid');
if(productIds[prodId]){
$(this).remove();
}else{
productIds[prodId] = true;
}
});
您可以搜索每个DOM的DOM,但这要贵得多,特别是如果您有一个大列表
答案 1 :(得分:2)
你可以删除任何不是第一个的傻瓜:
$('.list').each(function(){
$('[data-productid='+$(this).data('productid')+']:not(:first)').remove();
});
答案 2 :(得分:0)
这样做。参考工作演示
<html>
<head></head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<style>
</style>
<body>
<div class="list" data-productid="2">one</div>
<div class="list" data-productid="3">two</div>
<div class="list" data-productid="2">one</div>
<div class="list" data-productid="2">one</div>
<script type="text/javascript">
var isin = [];
$('div.list').each(function(){
var data_product = $(this).attr('data-productid');
if(isin[data_product])
{
$(this).remove();
}
else
{
isin[data_product] = true;
}
});
</script>
</body>
</html>
&#13;