jQuery:检查具有相同属性的元素是否存在多次
jQuery: Check if an element with the same attribute exists more than once
我想检查具有相同数据属性的元素是否在 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();
}
});
任何想法伙计们,
谢谢!
您需要跟踪数组或对象中的每一个。然后,当发现重复项时,可以将其删除
var productIds={};
$('.list').each(function(){
var prodId = $(this).attr('data-productid');
if(productIds[prodId]){
$(this).remove();
}else{
productIds[prodId] = true;
}
});
您可以在 DOM 中搜索每一个,但这要贵得多,尤其是如果您的名单很大
这样做。参考工作演示
<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>
您可以删除任何不是第一个的欺骗:
$('.list').each(function(){
$('[data-productid='+$(this).data('productid')+']:not(:first)').remove();
});
我想检查具有相同数据属性的元素是否在 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();
}
});
任何想法伙计们,
谢谢!
您需要跟踪数组或对象中的每一个。然后,当发现重复项时,可以将其删除
var productIds={};
$('.list').each(function(){
var prodId = $(this).attr('data-productid');
if(productIds[prodId]){
$(this).remove();
}else{
productIds[prodId] = true;
}
});
您可以在 DOM 中搜索每一个,但这要贵得多,尤其是如果您的名单很大
这样做。参考工作演示
<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>
您可以删除任何不是第一个的欺骗:
$('.list').each(function(){
$('[data-productid='+$(this).data('productid')+']:not(:first)').remove();
});