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

时间:2011-03-16 01:42:27

标签: javascript jquery jquery-selectors

如何通过选择以下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')

类似于:

{{1}}

但遗憾的是,这只会返回一个单词......

5 个答案:

答案 0 :(得分:4)

使用:has选择器例如。 table#topmost > tr:has(span)

答案 1 :(得分:0)

您的HTML无效。您实际上从未打开<tr>代码,只是尝试关闭它们(</tr>)。

答案 2 :(得分:0)

大概:

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

但这不起作用,因为你对这种格式化TRs的方式是兄弟姐妹,而不是父母

因此,在这种情况下......将您的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会有效。

答案 3 :(得分:0)

$(document).ready(function() {
        $('table span').each(function(){
            //do something with each tr you find
            $(this).parents('tr:last');
        }); 
    });

答案 4 :(得分:0)

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

$('#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>