【问题标题】:jQuery traverse upwards and findjQuery向上遍历并找到
【发布时间】:2016-11-11 22:05:31
【问题描述】:

我有一个表,它使用 jQuery 可排序来拖放和排序表中的元素。

当将一个元素放入 "sortable-row" 时,我想从前一个 "section-row" 中读取 data-id。

当该行被放到“section-row”正下方的行中时,我已经成功地实现了这一点,或者下面的 2 个级别。

第一层下:

($(ui.item[0]).closest('tr').prev('.stop-row').data('id');

第二级:

$(ui.item[0].previousElementSibling).closest('tr').prev('tr.stop-row').data('id');

问题是“部分”可以添加任意数量的行,所以我需要某种循环来检查前一个元素是否是“部分行”,如果不是,请检查以下内容以前的。

我如何使用 jQuery 实现这一点?

我的桌子:

<table class="table table-bordered table-responsive">
    <thead>
        <tr>
            <td>Assignment</td>
        </tr>
        <tr>
            <td>Type</td>
        </tr>
        <tr>
            <td>Time</td>
        </tr>
        <tr>
            <td>Level</td>
        </tr>
    </thead>

    <tbody class="sortable">
        <tr class="section-row" data-id="{{ id }}">
            <td> Section-{{ id }}</td>
        </tr>
        <tr class="sortable_row">
            <td>{{ assignment }}</td>
            <td>{{ type }}</td>
            <td>{{ time }}</td>
            <td>{{ level }}</td>
        </tr>
    </tbody>
</table>

【问题讨论】:

    标签: javascript jquery html jquery-ui


    【解决方案1】:

    您可以这样做: $(ui.item[0]).closest('tr').prevAll('.section-row:first').data('id');

    它将转到最近的tr,搜索所有前面的tr,并在.section-row类的第一个处停止。

    【讨论】:

    • 这正是我所需要的。我忘了补充说,表格示例中有多个部分,可以在哪些行之间删除。这解决了我的问题。
    • @DennisM Stack 将问题标记为已解决的方法在以下帖子 meta.stackexchange.com/questions/5234/… 中进行了概述 - 回到答案并做同样的事情。否则,其他人可能会认为问题仍未解决/未解决,可能会想发布更多答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2015-07-13
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多