Jquery查找具有相同属性值的所有div并将其id值相加

时间:2016-10-13 09:14:38

标签: javascript jquery html html5

我一直在寻找一种方法来做到这一点,并尝试合并我在这里找到的答案,但似乎无法解决这个问题。

var found = {};


$("[user]").each(function(){
var total = 0;
var $this = $(this);
var rel = $this.attr("user");


if(found[rel]){
    total += parseInt($this.id, 10);

}else{
    found[rel] = true;
}

$(this).attr("id",total);
});

基本上我想找到所有共享相同“用户”属性值的div并将它们的“id”值加在一起。如果有人伸出援助之手,我将非常感激!

谢谢!

以下是我正在操作的代码:

<div class="stream">
<div class="listProfileHolder" id="3" user="57f4bbc36f813"></div>
<div class="listProfileHolder" id="1" user="57f28454a6d65"></div>
<div class="listProfileHolder" id="1" user="57f28454a6d65"></div>
<div class="listProfileHolder" id="1" user="57f3cfa7cd376"></div>
<div class="listProfileHolder" id="1" user="57f28454a6d65"></div>
<div class="listProfileHolder" id="1" user="57f28454a6d65"></div>
<div class="listProfileHolder" id="1" user="57f4bbc36f813"></div>
</div>

3 个答案:

答案 0 :(得分:3)

我从你的问题中了解到,你想要找到所有具有相同值的div并获得这些值的id。

根据需要将map()each()$('div[value="user"]')一起使用。

var id = $('div[value="user"]').map(function(){
  return $(this).attr('id');
}).get().join(',');
console.log(id);

var total=0;
$('div[value="user"]').each(function(){
  total += parseInt($(this).attr('id'));
});

&#13;
&#13;
var id = $('div[value="user"]').map(function(){
  return $(this).attr('id');
}).get().join(',');
console.log(id);

var total=0;
$('div[value="user"]').each(function(){
  total += parseInt($(this).attr('id'));
});
console.log(total);


var total=0;
$('div.stream > div.listProfileHolder').each(function(){
  total += parseInt($(this).attr('id'));
});
console.log(total);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div value="user" id="10"></div>
<div value="user" id="20"></div>
<div value="user" id="30"></div>
<div id="user4"></div>

	
<div class="stream"> 
  <div class="listProfileHolder" id="3" user="57f4bbc36f813"></div> 
  <div class="listProfileHolder" id="1" user="57f28454a6d65"></div> 
  <div class="listProfileHolder" id="1" user="57f28454a6d65"></div> 
  <div class="listProfileHolder" id="1" user="57f3cfa7cd376"></div> 
  <div class="listProfileHolder" id="1" user="57f28454a6d65"></div> 
  <div class="listProfileHolder" id="1" user="57f28454a6d65"></div> 
  <div class="listProfileHolder" id="1" user="57f4bbc36f813"></div> 
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果我理解正确,这应该为你做,或者至少让你走上正确的道路,如果你的选择器是这样的:<div class='user' id='78'></div>

var totals = [];
var finalResult;
$(".user").map(function(o, b) {
  totals.push(parseInt(b.id))
  finalResult = totals.reduce(function(a, b) {
    return a + b
  });
});

答案 2 :(得分:0)

以下内容应该为您提供以下内容:

var items = {};
$('div.listProfileHolder').each(function() {
  if (items[$(this).attr('user')]) {
    items[$(this).attr('user')] += parseInt($(this).attr('id'))
  } else {
    items[$(this).attr('user')] = parseInt($(this).attr('id'));
  }
});

https://jsbin.com/kahopadeca/edit?html,js,console