find prev()sibling()jquery

时间:2013-10-29 07:29:48

标签: javascript jquery

我想将最接近的prev Tr与其子Tr一起定位。我的桌子是这样的:

<table>
    <tr class="parent">
        <td>Apple</td>
        <td>Orange</td>
        <td>Banana</td>
    </tr>
    <tr class="child">
        <td>Apple 1</td>
        <td>Orange 1</td>
        <td>Banana 1</td>
    </tr>
    <tr class="child">
        <td>Apple 2</td>
        <td>Orange 2</td>
        <td>Banana 2</td>
    </tr>
    <tr class="parent">
        <td>Table</td>
        <td>cHAIR</td>
        <td>Mouse</td>
    </tr>
    <tr class="child">
        <td>Table 1</td>
        <td>cHAIR 1</td>
        <td>Mouse 1</td>
    </tr>
    <tr class="child">
        <td>Table 2</td>
        <td>cHAIR 2</td>
        <td>Mouse 2</td>
    </tr>
</table>

是否可以使用closest()+prev()siblings()+prev()使用它的子tr来定位父tr?

4 个答案:

答案 0 :(得分:2)

想到的一个黑客是

var parents = $('.parent');
$('.child').each(function () {
    var tr = this
    var p = $(tr).prevAll(parents).first()[0];
    console.log(tr, p)
})

演示:Fiddle

答案 1 :(得分:2)

它会起作用

$(this).parent("tr").prev('tr.parent');

答案 2 :(得分:2)

使用next siblings selector: 您可以按~+

组合多个选择器

$($(tr).prev() + $(prev).find('*'))

答案 3 :(得分:1)

是。你可以这样做:

$(this).parent("tr").sibling();

或选择以前的所有兄弟姐妹:

$(this).parent("tr").prevAll("tr");

而是选择所有下一个:

$(this).parent("tr").nextAll("tr");