【问题标题】:jQuery: How to set different action for each loop only for first row of tablejQuery:如何只为表的第一行为每个循环设置不同的操作
【发布时间】:2015-08-21 06:49:27
【问题描述】:

我是 jQuery 新手,希望有人能帮助我。

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

到目前为止,我的以下内容按预期工作。
但是,在 tbody 的第一行,检查上一行的总和是没有意义的,因为没有上一行。
只有在这种情况下,它才应该采用出现在第 th 行 (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;
    });
});

提前非常感谢, 迈克

【问题讨论】:

  • 谢谢 - 我会试试看。
  • 不看HTML很难说。请设置一个工作示例,最好使用 StackOverflow 代码 sn-ps。

标签: javascript jquery loops each


【解决方案1】:

使用下面的代码..使用: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{} });

【讨论】:

  • 谢谢 - 这是第一行吗?
  • 谢谢 - 让我试试这个。
  • 你能发布你的 HTML 吗?
  • 你在回答中检查了我的两个选项吗?这里的 row 表示第一个 thtr
  • 如果你像这样在每个函数中传递索引$(this).closest('table tbody').find('td.calcSum').each(function(index){ if (index === 0){}else{} },那也很容易
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多