2016-05-16 54 views
0

我是Jquery的新手,對於我這個愚蠢的問題感到抱歉。真的下一個具有特定類的元素

這裏是我的HTML代碼:

<tr role="row" class="odd"> 
    <td><input type="checkbox" class="mycheckbox" value="2166"></td> 
    <td class="sorting_1">2166</td> 
    <td><span class="myparentid">743</span> 
    </td><td>0</td> 
</tr> 

我想從「mycheckbox」元素「myparentid」元素跳,忽略了樹結構。 jQuery中,我想是這樣的:

var checkedRow = $(".mycheckbox"); 
var nextelem = checkedRow.next(".myparentid"); 

它不會因爲旁邊的搜索只在兄弟姐妹工作...

你能不能給我一個提示?

謝謝!

回答

4

最簡單的方法是去到一個共同的父元素(在這種情況下,錶行),然後回落到一個你想要的:

$(".mycheckbox").closest("tr").find(".myparentid") 

編輯:要添加一些附加信息:

$(".mycheckbox") 

是起始位置,這是在:TR> TD> input.mycheckbox

(其中>正下方是指在html樹)

.closest向上移動的樹,直到它找到一個匹配的父元素,所以.closest("tr")將通過看直接消減找到

<tr role="row" class="odd"> 

nt「td」,那麼它是直接父母「tr」。

一般情況下我在這裏使用一個類(<tr class="businessobjectcontainer">)(根據業務對象是什麼),那麼它可以是一個divtr如果以後,看到.odd改變這部分內容我認爲這是造型,並會有一個.even - 所以這不是理想的選擇。所以「tr」必須這樣做。

.find()做的.closest的對面,下到樹尋找一個匹配的元素,在這種情況下.myparentid會發現:TR> TD> span.myparentid

這是你在找什麼。

.find()可能不是最高效的,但它可能是最靈活的,因爲這意味着您可以隨意移動您的tr的內容。

一招有效的替代方案可能是使用:

$(">td>span.myparentid", $(".mycheckbox").closest("tr")) 

但大多隻是改變了語法。

+0

我不認爲他想搜索'兄弟姐妹',因爲_我不工作,因爲下一次搜索只有兄弟姐妹... _ –

+0

@GuruprasadRao不知道你在說什麼...'.next'只搜索兄弟姐妹(並且僅在當前元素之後),這就是爲什麼這個答案不使用'.next'並且不僅僅搜索同胞 –

+0

我的意思是,答案找到了'.next'正確的東西。但不同之處在於你現在來自「父母」。不知道什麼OP實際上是想要找到.. –

相關問題