我一直在寻找一种方法来做到这一点,并尝试合并我在这里找到的答案,但似乎无法解决这个问题。
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>
答案 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'));
});
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;
答案 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'));
}
});