我正在尝试在列表中获取不同的值,将它们相加,如果值大于150,则会将类添加到指定的div中。这是我正在使用的HTML:
<ul class="fc_cart_item_options">
<li class="fc_cart_item_option fc_cart_item_weight">Weight: 70 <span class="fc_uom_weight">LBS</span></li>
<li class="fc_cart_item_option fc_cart_item_weight">Weight: 81 <span class="fc_uom_weight">LBS</span></li>
</ul>
我想弄清楚的是,使用jQuery,我是如何将上面显示的这些不同列表项的值相加,当它们大于150时,然后将类添加到特定的div?在某些情况下,我只有一个重量大于150的列表项,而在某些情况下,我可能有20个列表项,总计大于150,因此需要相同的结果,即将类添加到特定的格。
我的目标是,如果上面列表项的值大于150,那么类“gt_150”的div将会添加“foo”类。希望这是有道理的。
==
编辑:
在从其他人那里得到一些很好的答案之后遇到了一个小问题(再次感谢大家对你的直接反应)。
我没有考虑的一件事是数量。这就是我的意思:列表项目可能是70磅,但可能有3(210磅)的数量推动它超过重量限制。问题在于当前的解决方案,这不考虑给定列表项的数量。这个解决方案(下面提供的第一个响应)效果很好,但我忘了考虑以下因素。
<table>
<tr class="fc_cart_item">
<td>
<ul class="fc_cart_item_options">
<li class="fc_cart_item_option fc_cart_item_weight">
Weight: 70 <span class="fc_uom_weight">LBS</span>
</li>
</ul>
</td>
<td class="fc_cart_item_quantity">3</td>
</tr>
</table>
在上面的HTML中,列表项目本身可能只有70磅(这不会导致jQuery将类“foo”添加到特定div),但如果数量为3,我需要因素那个。
在列表项的所有情况下,具有数量的下一个单元格将紧随其后。
答案 0 :(得分:2)
$('.fc_cart_item').each(function() {
var total = 0;
$(this).find('.fc_cart_item_weight').each(function() {
var weight = parseInt($(this).text().split(' ')[1]);
total += weight;
});
var qty = parseInt($(this).find('.fc_cart_item_quantity').text());
total *= qty;
if(total > 150)
$('.gt_150').addClass('foo');
});
答案 1 :(得分:1)
您可以使用正则表达式一次性获取所有数字,然后计算总和:
var total = 0;
$.each($(".fc_cart_item_options").text().match(/\d+/g), function(i, v) {
total += +v;
});
if (total > 150) $('.gt_150').addClass('foo');