Ответ 1
$("body > *").not("body > #elementtokeep").remove();
Вы можете заменить часть not() тем, что хотите сохранить
Я пытаюсь удалить все во всем теле, за исключением одного элемента и его детей. Как я могу это сделать?
Изменить 1 Рассмотрим следующую разметку:
<html>
<body>
<div id="div1"></div>
<div id="div2">
<div id="elementNotToRemove"></div>
</div>
<div id="div3"></div>
<div id="div4"></div>
</body>
</html>
В приведенном выше примере я хочу удалить div1, div3 и div4, а также их дочерние элементы, но сохранить div2, потому что он содержит элемент, который нельзя удалить.
$("body > *").not("body > #elementtokeep").remove();
Вы можете заменить часть not() тем, что хотите сохранить
Вы можете сделать это следующим образом:
$('body > *:not(#dondelete)').remove();
Если ваш элемент имеет id="dondelete"
и является дочерним элементом тела.
Это старый вопрос, но принятый ответ неверен. В этой ситуации это не работает (см. http://jsfiddle.net/LVb3V/) и, конечно, не как общее решение.
Лучше использовать:
$('body *').not('#div2, #div2 *').remove();
Это приведет к удалению всех элементов в теле, кроме div2 и всех содержащихся в нем элементов.
Попробуйте
$('body > *:not(#123)').remove()
Я думаю, что
$("body *").not("body #div2")
.not("body #div2 #elementtokeep")
.not("body #div2 #elementtokeep *")
.remove();
- самый простой способ сфокусировать его.
Этот код работал у меня.
$('body > * :not(#123)').remove()
Вам нужно указать пробел между * и:. Раньше, когда пытались использовать код с
$('body > *:not(#123)').remove()
это не сработало. Я должен был предоставить пробел между символами * и:.
Счастливое кодирование.