【问题标题】:How to remove certain rows from a table?如何从表中删除某些行?
【发布时间】:2020-09-23 14:22:03
【问题描述】:

这似乎以前被问过,但在称它为重复之前,请仔细阅读;)

我有一张桌子

<table id="MyTable">
    <tr class="k-master-row"></tr>
    <tr class="k-detail-row"></tr>
    <tr class="k-master-row"></tr>
    <tr class="k-master-row"></tr>
    <tr class="k-detail-row"></tr>
    <tr class="k-master-row k-state-selected"></tr>
    <tr class="k-detail-row"></tr>
    <tr class="k-master-row"></tr>
    <tr class="k-master-row"></tr>
    <tr class="k-detail-row"></tr>
</table>

具有“k-master-row”类的每一行都可以具有“k-detail-row”类的行。如果 k-master-row 有一个相关的 k-detail-row 那么它的正下方就像这样

<tr class="k-master-row"></tr>
<tr class="k-detail-row"></tr>

现在我遇到的问题是我需要删除所有 k-detail-rows,除了这个细节行

<tr class="k-master-row k-state-selected"></tr>
<tr class="k-detail-row"></tr>

所以如果 k-master-row 有一个 k-state-selected 类,我需要保留它的 k-detail-row 并删除其他 k-detail-rows。

我知道我可以使用删除 k-detail-rows

$('#MyTable .k-detail-row').remove()

但这会删除所有 k-detail-rows,这不是我想要的..

所以,简而言之,使用 jquery 或 javascript,我如何删除与具有 k-state-selected 类的主行无关的所有详细信息行?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    逻辑似乎是您希望删除所有不立即跟随k-state-selected元素的.k-detail-row元素。

    在这种情况下:

    $('#MyTable :not(.k-state-selected) + .k-detail-row').remove();
    

    换句话说,删除所有.k-detail-row元素,其紧邻的兄弟元素不是.k-state-selected的元素。

    【讨论】:

    • 是的,这行得通。我将不得不对此进行更多研究:不是您使用的。一旦可以,我会标记为答案。谢谢!
    • 不客气。编辑以提供更多解释。
    • 感谢您的解释,我很感激。所以 + 符号意味着紧接在前面?
    • 立即进行。所以foo + bar 匹配所有紧跟在foo 之后的bars(即立即由)foo。这也是标准的 CSS,而不是 jQuery。
    猜你喜欢
    • 2019-01-07
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 2016-03-03
    相关资源
    最近更新 更多