2015-06-17 74 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

请参阅更新。 –