JQuery селектор - удалить элементы, если родительский div не имеет определенного идентификатора

0

Предположим, что следующая разметка:

<div id="NotificationBar">Stuff</div>
<div id="StatusBar>
    <p>Stuff</p>
</div>

<div id="myContainer>
    <div id="NotificationBar">Stuff</div>
    <div id="StatusBar>
        <p>Stuff</p>
    </div>
<div>

Я хочу следующее:

  • Если #NotificationBar и #StatusBar не входят в #myContainer - удалите их из DOM

Окончательная разметка, которую я хочу, такова:

<div id="myContainer>
    <div id="NotificicationBar">Stuff</div>
    <div id="StatusBar>
        <p>Stuff</p>
    </div>
<div>

Я попробовал следующее, но в итоге удалю весь родитель, который не то, что я хочу:

$("#StatusBar").parent('div').not('#myContainer').remove()
$("#NotificationBar").parent('div').not('#myContainer').remove()

Я не могу просто скрыть вещи с помощью CSS, мне действительно нужно удалить элементы из DOM.

Теги:
jquery-selectors

1 ответ

2
Лучший ответ

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

<div class="NotificationBar">Stuff</div>
<div class="StatusBar">
    <p>Stuff</p>
</div>
<div id="myContainer">
    <div class="NotificationBar">Stuff</div>
    <div class="StatusBar">
        <p>Stuff</p>
    </div>
</div>

тогда

$('.NotificationBar, .StatusBar').not('#myContainer .NotificationBar, #myContainer .StatusBar').remove()

Демо: скрипка

  • 0
    Хотя классы были бы правильными в этом случае - у нас есть несколько идентификаторов ... :)
  • 1
    @moontear По определению ID не должно быть дубликатов ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню