Javascript jQuery正在删除未按预期工作的表行

Javascript jQuery正在删除未按预期工作的表行,javascript,jquery,Javascript,Jquery,我正在尝试从范围中删除包含名为item的类的表行TR 从示例中可以看出: <table id='theTable'> <tbody> <tr> <td>John</td> </tr> <tr class='item'> <td>Google</td> </tr>

我正在尝试从范围中删除包含名为item的类的表行TR

从示例中可以看出:

<table id='theTable'>
    <tbody>
        <tr>
            <td>John</td>
        </tr>
        <tr class='item'>
            <td>Google</td>
        </tr>
        <tr class='item'>
            <td>Microsoft</td>
        </tr>
        <tr class='item'>
            <td>Apple</td>
        </tr>
        <tr>
            <td>Obama</td>
        </tr>
        <tr class='item'>
            <td>USA</td>
        </tr>
    </tbody>
</table>
所以约翰有3个项目:谷歌、微软和苹果。在另一边,奥巴马只有一个项目叫做美国

这就是说,这意味着John从0的位置开始,在3的位置结束,也就是item类结束的时候

我试图做的是删除TR,它的类项在范围内。所以如果我说我的start_索引从0开始,也就是John开始的位置,它应该从1删除到3

我的问题是只删除了项目的第一行


.

这样就可以了。它将从表中删除所有具有类“item”的tr

$('#theTable tr.item').remove()
看看更新的,这应该满足你的需要

/*
  The possibilities for the start_index are:
      1) - John
      2) - Obama
      3) - Roma
*/
var start_index = 3
    current_index = 0;


$("#theTable > tbody > tr").each(function() {
    if($(this).hasClass('item') === false) {
        current_index++;
    } else if(current_index == start_index && $(this).hasClass('item')) {
        $(this).remove();
    }
});

您的条件稍有错误,您可以等待下一个元素并检查它,而不是检查嵌套条件的下一个内部。 另外,.each函数接受2个变量,一个用于索引,另一个用于值。 这是你的

为什么不直接使用

它可能需要一个选择器才能停止,所以只需传入您希望它通过同级,直到它们停止:没有class.item。然后整个事情缩小到-

var start_index = 1;
$("#theTable>tbody>tr").eq(start_index - 1).nextUntil(":not(.item)").remove();
但是,如果.item确实是与前一行相关的集合,那么如果将信息结构化为嵌套元素,则在语义上会更好

[编辑-尽管如果您只希望索引与非-项相关,请使用以下内容]

var start_index = 1;
$("#theTable>tbody>tr:not(.item)").eq(start_index - 1).nextUntil(":not(.item)").remove();

为什么不试试$theTable tr.item.remove可以更改HTML吗?如果是这样,我建议使用定义列表:JohngoogleMicrosoftAppledo您需要删除给定人名的行吗?还是对所有人?我说我需要删除一个范围内的tr。然后我说,如果我的开始索引从0开始,在本例中是John开始的位置,它应该删除所有带有类项目的tr,直到他找到一个没有类项目的tr。再次阅读问题。尝试一下,开始索引=3,这应该会删除roma的项目!!!start_索引不是“项目”索引,而是为约翰-奥巴马-罗玛这样的“家长”编制的。哦,对了,我没注意到,谢谢。我会马上修好的谢谢,但是@Klors的解决方案更干净。
var start_index = 1;
$("#theTable>tbody>tr:not(.item)").eq(start_index - 1).nextUntil(":not(.item)").remove();