JQuery удаляет слишком много HTML - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть сгенерированный table, который содержит слишком много <td> элементов. Я звоню

$('#Container td[class!="SlideInfo"]').remove();

для удаления всех нежелательных <td> элементов, для которых не указано имя класса SlideInfo. Проблема в том, что у меня есть внутренняя таблица (дочерняя), которая также удаляется. Как я могу сказать jQuery удалить только братьев и сестер из <td>, а не изнутри.

Запускается

<table>
<tr>
<td class="SlideInfo">
    <table>
        <td class="SlideInfo">
            This gets removed, I know the html is wrong on this but this is an example.
        </td>
    </table>
</td>

<td class="SlideInfo">
    <table>
        <td class="SlideInfo">
            This gets removed, I know the html is wrong on this but this is an example.
        </td>
    </table>
</td>
</tr>
</table>

Я звоню $('#Container td[class!="SlideInfo"]').remove();, и он удаляет нежелательных td, но он также удаляет потомков td из тех, которые мне нужны.

Ответы [ 3 ]

2 голосов
/ 02 декабря 2011

Используйте дочерний селектор '>', который будет искать подходящие элементы только среди непосредственных дочерних элементов контейнера. Попробуйте это

$('#Container > td[class!="SlideInfo"]').remove();
1 голос
/ 02 декабря 2011

Я считаю, что правильный селектор это

$('#Container>td[class!="SlideInfo"]').remove();

Выбирает только дочерние элементы #Container. Однако, если #Container на самом деле является элементом table, а не tr, вам может понадобиться что-то вроде этого:

$('#Container>tr>td[class!="SlideInfo"]').remove();

или это

$('#Container>tbody>tr>td[class!="SlideInfo"]').remove();
0 голосов
/ 02 декабря 2011

Попробуйте использовать «дочерний селектор».

$('#Container > tr > td[class!="SlideInfo"]').remove();

Обратите внимание на знак «больше чем» в селекторе. Также обратите внимание, что вы должны использовать тег «tr» перед знаком «больше».

В противном случае селектор утверждает, что должен быть тег "td" как прямой потомок того, что помечено как "#Container". Если «#container» - это идентификатор тега «table», я не уверен, что селектор будет работать правильно.

«>» говорит «выбрать только детей родителя». Таким образом, внуки не должны быть отобраны. Это предполагает, что ваша таблица имеет идентификатор «Контейнер».

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