2015-06-17 76 views
-1

有沒有辦法通過使用CSS選擇器和jQuery來縮短這些類型的行?元素相對CSS選擇器

$(element).parent('tr').parent('tbody').parent('table') 

$(element).children('tbody').children('tr').children('td') 

它基本上是: 「給我把直接父母/子女,如果任何」

我需要100%等於選擇。

UPDATE:

closest('table)不起作用:可以返回元素本身可能會發現無法直接父母 find('td')不起作用:因爲我只需要直接的兒童;可能有很多人在樹下面

+0

添加'HTML'還可以創建'jsfiddle' – Tushar

+0

我想查看與HTML無關的選擇器。給定的父母/子女電話鏈是正確的。我只想以更簡潔的方式看到它們。 –

+0

jQuery和CSS選擇器是獨立的東西。並非所有使用jQuery選擇器都可以使用CSS選擇器。 – BoltClock

回答

1

您可以使用.closest()找到第一個祖先mathcing給定的選擇

element.parent('tr').parent('tbody').parent('table') -> $(element).parent('tr').closest('table') 

在以下情況下使用find()child selector

element.children('tbody').children('tr').children('td') -> element.find('> tbody > tr > td') 
+0

感謝您的答案btw ..我不知道在開始時可以使用'>'來表示'給定元素開始'。由於最接近的不正確,如果你想改變它,我可以將你的答案標記爲正確的。 –

+0

@ SvenR.Kunze在這種情況下,您可以使用'element.parent()。closest('table')'以便它不會找到該元素本身,但會返回其祖先的一個 –

+0

不完全。這意味着我會得到第一個父表。但我需要上面的結構:第一個直接父代。不是任何可能匹配的父母中的第一個。 –

3

您可以使用closest獲得最接近ancestor

element.closest('table') // element.parent('tr').parent('tbody').parent('table') 

對於組中的每一個元素,獲得通過測試選擇相匹配的第一個元素元素本身並在DOM樹中遍歷其祖先。

文檔:http://api.jquery.com/closest/

find搜索向下DOM樹:

獲取每個元素的後代在當前匹配的元素,通過一個選擇器過濾,jQuery對象,或元素。

element.find('td') // element.children('tbody').children('tr').children('td') 

文檔:http://api.jquery.com/find/

+0

請參閱更新。 –

0

使用closest向上移動到最接近的匹配元素。此外,使用find搜索到給定的元素(注意,發現會得到所有匹配的元素下到所有現有的DOM樹層)

element.closest('table'); 
element.find('td'); 
+0

請參閱更新。 –