之前的10 tr jquery

时间:2016-04-14 10:44:34

标签: javascript jquery html css

$('.dynamicsubtotal').each(function() {
  $(this).prev('.value').css('color', 'red')
  market += parseInt($(this).prev('.value').find('td:nth-child(6)').text());
  console.log(market)
})
<table>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='dynamicsubtotal'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='dynamicsubtotal'></tr>
</table>

我想在tr之前选择类值的所有10 tr class dynamicsubtotal

2 个答案:

答案 0 :(得分:1)

这就是您正在寻找的https://api.jquery.com/prevUntil/

$('.dynamicsubtotal').each(function() {

  var market = 0;
  var $prevTRS = $(this).prevUntil('.dynamicsubtotal', '.value');

  $prevTRS.each(function() {
     market += parseInt($(this).find('td:nth-child(6)').text() || 0, 10);
  });

  console.log(market);
});

示例(使用nth-child(1)简化HTML)

&#13;
&#13;
$('.dynamicsubtotal').each(function() {

  var market = 0;
  var $prevTRS = $(this).prevUntil('.dynamicsubtotal', '.value');

  $prevTRS.each(function() {
    market += parseInt($(this).find('td:nth-child(1)').text() || 0, 10);
  });

  console.log(market);
});
&#13;
<!-- results pane console output; see http://meta.stackexchange.com/a/242491 -->
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table>
  <tr class='value'><td>10</td></tr>
  <tr class='value'><td>10</td></tr>
  <tr class='value'><td>10</td></tr>
  <tr class='value'><td>10</td></tr>
  <tr class='value'><td>10</td></tr>
  <tr class='value'><td>10</td></tr>
  <tr class='value'><td>10</td></tr>
  <tr class='value'><td>10</td></tr>
  <tr class='value'><td>10</td></tr>
  <tr class='value'><td>10</td></tr>
  <tr class='dynamicsubtotal'><td>dyn</td></tr>
  <tr class='value'><td>20</td></tr>
  <tr class='value'><td>20</td></tr>
  <tr class='value'><td>20</td></tr>
  <tr class='value'><td>20</td></tr>
  <tr class='value'><td>20</td></tr>
  <tr class='value'><td>20</td></tr>
  <tr class='value'><td>20</td></tr>
  <tr class='value'><td>20</td></tr>
  <tr class='value'><td>20</td></tr>
  <tr class='value'><td>20</td></tr>
  <tr class='dynamicsubtotal'><td>dyn</td></tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我认为您真正要做的是在每个value元素之前找到所有dynamicsubtotal元素,因此您正在寻找prevUntil

&#13;
&#13;
$('.dynamicsubtotal').each(function(i) {
  $(this).prevUntil('.dynamicsubtotal', '.value').css('color', 'red').append('<td>' + i + '</td>')
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='dynamicsubtotal'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='value'></tr>
  <tr class='dynamicsubtotal'></tr>
</table>
&#13;
&#13;
&#13;