使用JQ以递归方式从表中删除行

时间:2015-05-31 12:32:26

标签: javascript jquery recursion

我想编写一个递归函数来删除表中的行。

我有要保留的行数,在该号码之后我想删除所有行。

例如: 我有5号,所以前5行需要留下,其余的需要去。 (使用行id)

代码:

<table id="table">
<tr id="tr1"/>
<tr id="tr2"/>
<tr id="tr3"/>
<tr id="tr4"/>
<tr id="tr5"/>
<tr id="tr6"/>
<tr id="tr7"/>
<tr id="tr8"/>
</table>

我不知道我会有多少行,这就是为什么我认为我需要一个递归解决方案。

3 个答案:

答案 0 :(得分:2)

您可以使用几种不同的jQuery过滤器方法:

var numRows=5;
$('#table tr').slice(numRows).remove();

OR

$('#table tr:gt(' + (numRows-1) + ')').remove();

DEMO

参考文献:

slice() docs

:gt() selector docs

答案 1 :(得分:1)

您可以使用此

$(document).ready(function(){
var deleteAfter =  5
$.each($("#table tr"),function(key,value){
    //do your conditional here
    if(key > deleteAfter-1){
        value.remove();
    }
});

alert("now the table row is "+$("#table tr").length);

});

这有效jsfiddle

对不起,如果你想使用id作为输入,请改用

$(document).ready(function () {
    //define the id first
    var deleteAfter = $("#tr5");
    var elementNo;

$.each($("#table tr"), function (key, value) {
    if (this.id == deleteAfter.attr("id")){
        elementNo = key;
    }
});

$.each($("#table tr"), function (key, value) {
    //do your conditional here
    if (key > elementNo) {
        value.remove();
    }
});

alert("now the table row is " + $("#table tr").length);
});

我更新了jsfiddle

答案 2 :(得分:1)

你可以使用:gt()选择器,它选择大于索引的所有元素,然后你可以删除它。

$(document).ready(function () {
    var index = 4; // set index 4, so want to remove 5 elements( 0 to 4)
    $('#table tr:gt('+index+')').remove();
});