我有一個<ul>
列表,其中所有的孩子<li>
有規模的這樣一個「自制」屬性:jQuery的添加子元素的屬性
<ul class="container">
<li size="3"></li>
<li size="5"></li>
<li size="2"></li>
</ul>
我如何獲得所有孩子的大小值然後添加它們,所以我最終得到一個等於(在這種情況下)10的變量?
孩子的數量和size
號碼是動態的,所以我猜我需要某種循環?
我有一個<ul>
列表,其中所有的孩子<li>
有規模的這樣一個「自制」屬性:jQuery的添加子元素的屬性
<ul class="container">
<li size="3"></li>
<li size="5"></li>
<li size="2"></li>
</ul>
我如何獲得所有孩子的大小值然後添加它們,所以我最終得到一個等於(在這種情況下)10的變量?
孩子的數量和size
號碼是動態的,所以我猜我需要某種循環?
這是最簡單的方法:
var sum = 0;
$('.container li').each(function() {
sum += +$(this).attr('size');
});
console.log(sum);
這裏是現代瀏覽器更復雜的方式:
var sum = $('.container li').map(function() {
return +$(this).attr('size');
}).get().reduce(function(a, b) {
return a + b;
});
console.log(sum);
@ RokoC.Buljan嗯,也許是因爲通常人們會使用它來將集合減少到某個特定值,如Map/Reduce算法。但是,您也可以利用'reduce'來展開數組或將其轉換爲對象。 – VisioN
嘗試,
var sum = 0;
$('.container li[size]').each(function(){
sum += +$(this).attr('size');
});
console.log(sum);
注:坦率地說,我只是複製從視覺的答案求和的東西。
你的意思是這樣的:
var sum = 0;
$('.container li').each(function() {
var p = parseInt($(this).prop('size'));
sum += p;
});
alert(sum);
我相信你的意思是'sum + = p;'而不是'sum + = q;' – dreamweiver
@dreamweiver:是啊....謝謝。 –
嘗試使用自定義屬性此
$(function(){
var sum = 0;
$(".container>li[size]").each(function(){
var p = parseInt($(this).attr('size'));
sum += p;
});
alert(sum);
});
你爲什麼不使用數據 - '*'屬性? –