2015-06-17 2 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(). Closeest ('table')', чтобы он не нашел сам элемент, но вернет одного из своих предков –

+0

Не совсем.Это означало бы, что я получу первую родительскую таблицу. Но мне нужна структура выше: первый родитель DIRECT. Не первый из родителей, которые могли бы совпасть. –

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

Docs: http://api.jquery.com/find/

+0

См. Обновление. –

0

Используйте closest, чтобы перейти к ближайшему совпадающему элементу. Кроме того, используйте find для поиска в данном элемент (обратите внимание, что найти получат все совпадающие элементы, идущие вниз для всех существующих слоев DOM дерева)

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

См. Обновление. –