2013-10-29 83 views
-2

我想定位最近的prev Tr和它的子Tr。我的表是這樣的:find prev()sibling()jquery

<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> 

那是有可能的目標父TR與它的孩子TR使用closest()+prev()siblings()+prev()?浮現在腦海

+0

你的問題很多選擇合併沒有任何意義。 'TR's沒有孩子'TR's,他們有孩子'TD's。 – Barmar

+0

當前元素是從什麼開始的,以及您嘗試從中選擇哪些元素? – Barmar

回答

2

一個黑客是

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

演示:Fiddle

+0

但是當我嘗試寫:$(p).css({background:'red'});它使父母和第一個孩子行的紅色。 – Era

+0

當我在那裏工作時: var p = $(tr).prevAll('。parent')。eq(0);感謝您的想法。 – Era

1

是。你可以做到這一點是這樣的:

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

或選擇以前的所有兄弟姐妹:

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

而是選擇所有那些旁邊:

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

它會工作

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