jQuery:如何仅为表

时间:2015-06-06 09:58:46

标签: javascript jquery loops each

我是jQuery的新手,希望有人可以帮助我。

我有一个动态创建的大型表,其中包含3列,一列用于需要减去的金额,一列用于需要添加的金额,一列用于每行的总和。

到目前为止,我的下面内容符合预期。
但是,在tbody的第一行,检查前一行的总和是没有意义的,因为没有前一行。
只有在这种情况下才应该采用出现在thead(class = "calcStart")中的初始余额而不是前一行的总和。

有人可以告诉我如何实现这一目标吗? 另外,如果在代码中有更好/更短的内容,请告诉我。

我的JS:

var calcMinus, calcPlus;
var calcSum = 0;
$(document).on('keyup', '.calcMinus, .calcPlus', function(){
    $(this).closest('table tbody').find('td.calcSum').each(function(){
        calcMinus = Number( $(this).closest('tr').find('td.calcMinus').find('div').text() );
        calcPlus = Number( $(this).closest('tr').find('td.calcPlus').find('div').text() );
        if((calcMinus == '') && (calcPlus == '')){
            $(this).text('0');
        }else{
            calcSum += Number( $(this).closest('tr').prev('tr').find('td.calcSum').text() );
            calcSum -= calcMinus;
            calcSum += calcPlus;
            $(this).text(calcSum);
        }
        calcSum = 0;
    });
});

非常感谢, 麦克

1 个答案:

答案 0 :(得分:2)

使用下面的代码..使用:gt()选择器

:gt(0)

  

选择匹配中索引大于索引的所有元素   集。

$(this).closest('table tbody').find('td.calcSum:gt(0)').each(function(){

如果您想先跳过,请使用下面的代码

$(this).closest('table tbody').find('th:gt(0) td.calcSum').each(function(){

与OP讨论了另一种避免第一行的选择

使用索引参数

在每个函数中传递索引
$(this).closest('table tbody').find('td.calcSum').each(function(index){ 
if (index === 0){}else{} });