jquery - 使用 jQuery 将值相加然后触发结果

标签 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,我需要考虑因素那个。

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

最佳答案

$('.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');
});

关于jquery - 使用 jQuery 将值相加然后触发结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4466418/

相关文章:

javascript - 如何使用 .load() 加载 URL

javascript - 在无序列表中查找重复项

javascript - Bootstrap 3 导航列表项悬停问题

jquery - 在 jQuery 中选择 DIV 的真实高度

jquery - 删除具有点击功能的类时出现 CSS 过渡效果问题

javascript - 上一个下一个按钮响应

javascript - 如何拆分 Ajax 帖子的成功输出?

jquery - 为这个下拉代码添加一个 jquery 效果

jQuery 获取下一个元素及其所有子元素

javascript - 允许用户添加表单输入字段: Why is append() only working once?