Как я могу элегантно выбрать родителя, включая его набор прямых потомков? - PullRequest
0 голосов
/ 18 мая 2009

Я работаю с беспорядком разметки HTML. Чтобы получить надежные совпадения, я обратился к явному запросу цепочки элементов, используя оператор '>' .

Для этого вопроса я пытаюсь выбрать родителя явной цепочки потомков.

Например, я бы хотел выбрать элемент таблицы с классом «панель инструментов» в следующем HTML-коде:

<table class='toolbar'>
  <tbody>
    <tr>
      <td class='button'>
        ...
      </td>
    </tr>
  </tbody>
</table>

Вот что я пробовал:

1. Используйте 'has'

$("table.toolbar:has(tbody > tr > td.button)")

Здесь элементы сопоставляются, даже если tbody не является прямым потомком таблицы, поэтому это не работает надежно.

2. Используйте '>' и parent ()

$("table.toolbar > tbody > tr > td.button").parent().parent().parent()

Это работает, но грязно. Также необходимо убедиться, что указано правильное количество вызовов parent ().

3. ???

Из-за дерьма HTML очень важно, чтобы элементы явно указывались в запросе как один прямой потомок под другим .

Может кто-нибудь помочь с наилучшим способом сделать это? Спасибо!

Ответы [ 4 ]

0 голосов
/ 18 мая 2009
$("table.toolbar > tbody > tr > td.button").closest("table.toolbar")

Все еще немного грязно, но должно работать.

0 голосов
/ 18 мая 2009

Обновлен:
Вы можете использовать:

$("table.toolbar:has(tbody:has(td.button))")
0 голосов
/ 18 мая 2009

Я думаю:

$ ( "td.button"). Ближайший ( "table.toolbar")

0 голосов
/ 18 мая 2009
$("td.button").parents("table.toolbar")

кажется самым простым способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...