【问题标题】:Find data-id for each list item and add together查找每个列表项的 data-id 并相加
【发布时间】:2017-10-27 13:16:18
【问题描述】:

我有一个包含每个嵌套 ul 元素的列表,我希望能够找到每个 .cart-select 项目的 data-id 属性,将它们加在一起,然后在某处打印出来。例如,第一个 .cart-select 项目的值为 7。

到目前为止,我已经添加了一个函数,它遍历每个 .cart-select 并找到 .bay-qty 的 data-id,但是我不确定如何从每个中获取这些值并将它们加在一起。

有人可以帮忙吗?

$('.cart-select').each(function() {
  var products = $('.list .cart-items', this) find('.bay-qty').data("id").count();
  $('<p>' + products + '</p>').appendTo(this);
});
<li class="cart-select">
  <li></li>
  <ul class="cart-items">
      <table>
        <tr>
          <td class="bay-qty" data-id="1">1</td>
        </tr>
        <tr>
          <td class="bay-qty" data-id="2">2</td>
        </tr>
        <tr>
          <td class="bay-qty" data-id="4">3</td>
        </tr>
      </table>
    </ul>

  <li>
    <li class="cart-select">
      <li></li>
      <ul class="cart-items">
           <table>
            <tr>
              <td class="bay-qty" data-id="1">1</td>
            </tr>
          </table>
        </li>
      <li>

【问题讨论】:

  • 我不懂你的 HTML。你有&lt;li&gt;标签嵌套在其他&lt;li&gt;标签中(要创建一个嵌套列表,你需要&lt;li&gt;&lt;ul&gt;&lt;/ul&gt;&lt;li&gt;),然后&lt;ul&gt;标签里面有&lt;table&gt;标签; &lt;ul&gt; 中唯一在语义上有效的元素是 &lt;li&gt;。此外,您的 &lt;td&gt; 标记没有值,因此呈现的只是一些项目符号。
  • 嗨,汤姆,是的,你是对的。这是我正在编写的代码的简化版本,只是为了给你一个例子,我错误地将 .cart-items 键入为
  • 而不是
      。答案已编辑。

标签: jquery html


【解决方案1】:

使用.map() 将每个元素转换为其值,然后使用reduce 对数组求和:

var sum = $('.list .cart-items', this)
  .find('.bay-qty')
  .map(function () { return this.data("id"); })
  .get() // get the array
  .reduce(function (sum, value) { return sum + value; }, 0)

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签