.addClass на основе диапазона, заключенного в две таблицы

Я пытаюсь добавить класс в таблицу.

<table> > <tbody> > <tr> > <td> > <table> > <tbody> > <tr> > <td> > <span class="subcategory">

Поэтому я бы хотел добавить класс в исходную таблицу на основе span.subcategory. У меня есть это:

$('span.subcategory').parent().closest("table").addClass('myClass');

Но это только идет ко второму столу.

4 ответа

Решение
$('span.subcategory').parents('table:last')
$('span.subcategory').closest('table').parent().closest('table').addClass('myClass');

Я считаю, что это должно быть более эффективным, поскольку оно будет проходить по дереву DOM только до второй (внешней) таблицы.

Чтобы добраться до внешнего стола:

$('span.subcategory').parents('table').eq(1).addClass('myClass');

JS Fiddle demo

Или, возможно:

$('span.subcategory').parents('table:has("table span.subcategory"):first').addClass('myClass');

JS Fiddle demo

Есть ли

$('span.subcategory').closest('table')
    .parent().closest('table')
    .addClass('myClass');`  

Работа?

В качестве альтернативы:

$('table:has(table:has(span.subcategory))').addClass('myClass');
Другие вопросы по тегам