Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除一行后,使用jQuery对所有表行重新编号_Javascript_Jquery - Fatal编程技术网

Javascript 删除一行后,使用jQuery对所有表行重新编号

Javascript 删除一行后,使用jQuery对所有表行重新编号,javascript,jquery,Javascript,Jquery,如何修改下面的函数,使行计数从1开始,而不是从零开始,然后在可能的情况下按升序(从最小到最大)排序表行 以下是相关代码: $("tr.highlighted").remove(); renumberRows() function renumberRows() { $('#data tr').each(function(index, el){ $(this).children('td').first().text(index++); }); } 最简单的解

如何修改下面的函数,使行计数从1开始,而不是从零开始,然后在可能的情况下按升序(从最小到最大)排序表行

以下是相关代码:

$("tr.highlighted").remove();

renumberRows()

function renumberRows() {

    $('#data tr').each(function(index, el){
        $(this).children('td').first().text(index++);
    });

}

最简单的解决方案是使用CSS计数器(为了简洁起见,删除了所有与计数器无关的CSS):

当然,上面使用了一种简单的方法来删除一行,该行可能与您自己的方法相似,也可能与您自己的方法不同;然而,这是不相关的,因为CSS会自动对行重新编号

但是,使用jQuery,一旦触发了
.remove()
,就需要显式地重新计算
tr
元素的数量。如果
remove()
允许一个简单的回调函数:

$(this).remove(function(){
    renumberRows();
});
但是,当然,
remove()
方法中没有回调的规定。因此,我们需要使用
$。when()
。then()

它基本上是在执行
$(this.remove()
之后调用
renumberRows()
函数

不过,考虑到一个有点愚蠢的感觉解决方案,我想我应该尝试使用:

$(this).remove(renumberRows());
与我的预期相反,这是有效的:。并且比使用
$.when().then()链要简单一些

参考资料:

  • CSS:
    • “”
  • jQuery:

如何以及何时删除行?要以最简单的方式修复代码,可以使用
++index
index+1
。对表格行进行排序,进行搜索,你会发现很多解决方案。你应该使用CSS计数器,而不是JS。谷歌我刚才说的话,并学习它。
$.when($(this).remove()).then(renumberRows);
$(this).remove(renumberRows());