jQuery:如何为 table 的第一行的每个循环设置不同的操作
jQuery: How to set different action for each loop only for first row of table
我是 jQuery 的新手,希望有人能帮助我解决这个问题。
我有一个动态创建的大型 table,它包含 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;
});
});
非常感谢,
麦克
使用下面的代码..使用:gt()
选择器
Select all elements at an index greater than index within the matched
set.
$(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{} });
我是 jQuery 的新手,希望有人能帮助我解决这个问题。
我有一个动态创建的大型 table,它包含 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;
});
});
非常感谢, 麦克
使用下面的代码..使用:gt()
选择器
Select all elements at an index greater than index within the matched set.
$(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{} });