Использование replaceWith()
:
$("#some_text > p").replaceWith("some other html");
или если вам нужно быть более конкретным:
$("#some_text > p:first-child").replaceWith("some other html");
или даже использовать not()
:
$("#some_text").children().not("#child").replaceWith("some other html");
replaceWith()
заменит каждый сопоставленный элемент на определенный HTML, поэтому, если вы сопоставите более одного, вы получите дублированный контент. Альтернативный вариант - удалить его и добавить нужный HTML-код.
По сути, замена HTML внутри div при сохранении дочернего элемента - сложная задача, потому что куда вы помещаете новый HTML? Перед этим? После? Вокруг? Вы, вероятно, должны быть более конкретны об этом.