使用jQuery添加值然后触发结果

时间:2010-12-16 23:38:44

标签: jquery

我正在尝试在列表中获取不同的值,将它们相加,如果值大于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,我需要因素那个。

在列表项的所有情况下,具有数量的下一个单元格将紧随其后。

2 个答案:

答案 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');