Почему первая запись не выбирается с помощью n-го дочернего элемента

#javascript #jquery

#javascript #jquery

Вопрос:

У меня есть следующий код:

Javascript выглядит следующим образом:

     $(document).ready(function() {
        $('#btnHide').click(function() {
            $('td:nth-child(1)').nextUntil(':nth-child(4)').toggle();

        });
    });
  

и html выглядит следующим образом

 <table id="tableone" border="1">
<tr>
    <td>Row 0 Column 0</td>
    <td >Row 0 Column 1</td>
    <td >Row 0 Column 2</td>
    <td >Row 0 Column 3</td>
</tr>
<tr>
    <td>Row 1 Column 0</td>
    <td>Row 1 Column 1</td>
    <td>Row 1 Column 2</td>
    <td>Row 1 Column 3</td>
</tr>
<tr>
    <td>Row 2 Column 0</td>
    <td>Row 2 Column 1</td>
    <td>Row 2 Column 2</td>
<td>Row 2 Column 3</td>
</tr>
<tr>
    <td>Row 3 Column 0</td>
    <td>Row 3 Column 1</td>
    <td>Row 3 Column 2</td>
    <td>Row 3 Column 3</td>
</tr>
 <tr>
    <td>Row 4 Column 0</td>
    <td>Row 4 Column 1</td>
    <td>Row 4 Column 2</td>
    <td>Row 4 Column 3</td>
</tr>
 <tr>
    <td>Row 5 Column 0</td>
    <td>Row 5 Column 1</td>
    <td>Row 5 Column 2</td>
    <td>Row 5 Column 3</td>
</tr>


<input id="btnHide" type="button" value="Hide Columns"/>    
  

Что бы я ни делал, я, похоже, не могу найти, как скрыть и первый столбец.. Я использовал 0 вместо 1, чтобы посмотреть, индексируется ли она с использованием 0 в качестве первой записи, но, похоже, это тоже не работает. Как бы я мог выбрать первый столбец, который также сворачивается при нажатии кнопки

ДОБАВЛЕННЫЙ ВОПРОС: после тестирования этого в моем макете я понял, что при нажатии этой кнопки столбцы во всех таблицах на странице сворачиваются. Поскольку я никоим образом не являюсь экспертом по Javascript, может ли кто-нибудь указать мне правильное направление в том, как я мог бы ориентироваться на конкретные таблицы. Спасибо

Ответ №1:

.nextUntil() возвращает элементы после исходного элемента, но не включая исходный элемент. Используется addBack() для добавления исходного элемента в набор:

 $('td:nth-child(1)').nextUntil(':nth-child(4)').addBack().toggle();
  

Комментарии:

1. Я только что попробовал, и это сработало отлично! Спасибо за вашу помощь!

2. Я думаю .andSelf() , я бы тоже сделал то же самое

3. Да, это устаревшая функция, которая addBack заменила.

Ответ №2:

Привет, ты можешь сделать это так:

 $('#btnHide').click(function() {
    $('td:not(td:nth-child(4))').toggle();

 });
  

здесь вы выбираете каждый элемент, кроме элемента, на который ссылается «:not ()»