2016-09-15 3 views
0

Мне нужно скрыть некоторые столбцы таблицы html с помощью jQuery. Я использую следующий код:jQuery nth-child selector issue

$('#my-table tr td:nth-child(7),th:nth-child(7)').hide() 

код работает, он скрывает столбец таблицы, однако, не уважая селектор идентификатора таблицы, это применение изменений для всех таблиц в текущем документе.

Что я должен изменить, чтобы он работал должным образом?

+7

'$ ('# мой стол тр тд: п-й ребенок (7), # мой стол й: п-го ребенка (7) ') '- вы должны каждый раз объявлять внешний идентификатор, он не может догадаться, что это то, что вы имеете в виду. –

+0

Комментарий выше, скорее всего, ваша проблема. Вы пропустили идентификатор на втором селекторе – Huangism

+0

Спасибо, теперь он работает! @DarrenSweeney –

ответ

2

Вы должны указать id для обоих селекторов, иначе th:nth-child(7) скроет каждыйth:nth-child(7) вы могли бы иметь в своем коде

$('#my-table tr td:nth-child(7), #my-table th:nth-child(7)').hide() 

Вы также можете упростить это с помощью find() метода

$('#my-table tr').find('td:nth-child(7), th:nth-child(7)').hide() 

EDIT

как указал @A. Wolff это может быть еще более упрощена, используя только это:

$('#my-table tr > :nth-child(7)').hide() 
+0

Спасибо !, это тот же ответ, что и Даррен. Поскольку это первый ответ на вопрос, я буду принимать его как правильное через 5 минут. Извините, временное ограничение SO. –

+0

Не было бы этого достаточно: '$ ('# my-table tr: nth-child (7)'). Hide()' ?! Поскольку дочерний элемент 'tr' может быть только' td' или 'th' (или' template', но он все равно не отображается) –

+0

@ A.Wolff да, я бы хотел добавить его в свой ответ. – dippas

1

Вы можете использовать comma separated multiple selectors, но он должен быть полный селектор.

$('#my-table tr td:nth-child(7),#my-table th:nth-child(7)') 

или find() метод с селектором множественным внутренним элементом

$('#my-table tr').find('td:nth-child(7),th:nth-child(7)')