jQuery:选择子元素的最后一个父元素

发布于 2024-10-23 20:44:27 字数 705 浏览 2 评论 0原文

我如何通过选择以下 HTML 中具有跨度的内容来获得 tr 的最顶层:

<table>
    <tr><!-- THIS ONE -->
        <td>
            <table>
                <tr>
                    <td><span></span></td>
                </tr>
            </table>
        </td>
        <td><span></span></td>
    </tr>
    <tr><!-- AND THIS ONE -->
        <td><span></span></td>
        <td><span></span></td>
    </tr>
</table>

所以类似于:

$('table span').parent('tr:last')

虽然,不幸的是,这只返回一个 tr...

How would I get the top most level of tr by selecting the ones that have spans in the following HTML:

<table>
    <tr><!-- THIS ONE -->
        <td>
            <table>
                <tr>
                    <td><span></span></td>
                </tr>
            </table>
        </td>
        <td><span></span></td>
    </tr>
    <tr><!-- AND THIS ONE -->
        <td><span></span></td>
        <td><span></span></td>
    </tr>
</table>

So something like:

$('table span').parent('tr:last')

Though, unfortunately, that only returns a single tr...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

新一帅帅 2024-10-30 20:44:27

使用 :has 选择器,例如。 表#topmost > tr:有(跨度)

use the :has selector eg. table#topmost > tr:has(span)

半﹌身腐败 2024-10-30 20:44:27

您的 HTML 一开始就无效。您从未真正打开 标记,您只是尝试关闭它们 ()。

Your HTML is invalid to begin with. You never actually open a <tr> tag, you only try to close them (</tr>).

许久 2024-10-30 20:44:27

可能:

$('table span').parentsUntil('tr');

但这行不通,因为你格式化TR的方式是兄弟姐妹,而不是父母

所以在这种情况下......将你的HTML更改为 -

<table>
    <tr>
        <td>
            <table>
                <tr>
                    <td><span></span></td>
                </tr>
            </table>
        </td>
        <td><span></span></td>
    </tr>
    <tr>
        <td><span></span></td>
        <td><span></span></td>
    </tr>
</table>

并且上面的javascript将工作。

Probably:

$('table span').parentsUntil('tr');

But that won't work because the way you have this formatted the TRs are siblings, not parents

So in that case...change your HTML to -

<table>
    <tr>
        <td>
            <table>
                <tr>
                    <td><span></span></td>
                </tr>
            </table>
        </td>
        <td><span></span></td>
    </tr>
    <tr>
        <td><span></span></td>
        <td><span></span></td>
    </tr>
</table>

and the javascript above will work.

七色彩虹 2024-10-30 20:44:27

在我看来,最顶层始终位于最顶层的表中,因此您只需检查这些行

$('#topmost-table>tr:has(span)').stuff();

<table id="topmost-table">
    <tr>
        <td>
            <table>
                <tr>
                    <td><span></span></td>
                </tr>
            </table>
        </td>
        <td><span></span></td>
    </tr>
    <tr>
        <td><span></span></td>
        <td><span></span></td>
    </tr>
</table>

It seems to me that the top most level will always be in the topmost table, so you only have to check those rows

$('#topmost-table>tr:has(span)').stuff();

<table id="topmost-table">
    <tr>
        <td>
            <table>
                <tr>
                    <td><span></span></td>
                </tr>
            </table>
        </td>
        <td><span></span></td>
    </tr>
    <tr>
        <td><span></span></td>
        <td><span></span></td>
    </tr>
</table>
风苍溪 2024-10-30 20:44:27
$(document).ready(function() {
        $('table span').each(function(){
            //do something with each tr you find
            $(this).parents('tr:last');
        }); 
    });
$(document).ready(function() {
        $('table span').each(function(){
            //do something with each tr you find
            $(this).parents('tr:last');
        }); 
    });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文