J’ai la structure HTML suivante (sans fin) …
1 2.5 1.5 1.5 2
… et je veux que le script ajoute les points 1 à 5 pour chaque emballage. Le résultat de chaque wrapper devrait apparaître dans une nouvelle div, appelée “result”. Ce div doit également être créé par le script.
Cela ressemblerait à ceci ::
1 2.5 1.5 1.5 2 8.5 <-- created by script 2.5 3.5 4 1.5 1 12.5 <-- created by script 4 1.5 2.5 2 1.5 11.5 <-- created by script
Mes problèmes:
a) Comment puis-je append les scores pour chaque wrapper correct, si le nom de la classe est toujours le même (wrapper, contenu, partition)?
b) Comment puis-je créer automatiquement une div avec le résultat pour chaque wrapper?
Quelqu’un peut-il m’aider?
.content
chaque élément .content
, puis ajoutez la sum des éléments .score
.
Vous pouvez y parvenir en imbriquant des boucles .each()
:
Exemple ici
$('.wrapper .content').each(function () { var sum = 0; $(this).find('.score').each(function () { sum += Number($(this).text(), 10); }); $(this).append('' + sum + ''); });
$('.wrapper .content').each(function () { var sum = 0; $(this).find('.score').each(function () { sum += Number($(this).text(), 10); }); $(this).append('' + sum + ''); });
.result { color: #f00; }
1 2.5 1.5 1.5 2 2.5 3.5 4 1.5 1 4 1.5 2.5 2 1.5
$(document).ready(function(){ $('.content').each(function(){ var total = 0; $(this).find('> .score').each(function(){ total += parseFloat($(this).text()); }); $(this).append('' + total + ''); }); });
Démo de travail
Vous pouvez utiliser les DOM de jQuery each
:
var finalVal = 0; $(function () { $(".content").each(function () { finalVal = 0; $(this).find(".score").each(function () { finalVal += Number($(this).text()); }); $(this).append('' + finalVal + ''); finalVal = 0; }); });
.result {background: #99f;}
1 2.5 1.5 1.5 2 2.5 3.5 4 1.5 1 4 1.5 2.5 2 1.5