replaceWith() wechselt ein Element durch ein anderes. Das ist hier nicht gemeint.
Ich hab' das wohl falsch verstanden, ich ging davon aus dass in dem div-Element ohnehin nur ein Button zu finden ist, der einerseits das einzige Kind dieses div-Elements ist und andererseits einfach durch einen anderen ersetzt werden soll.
Zwar muss der Selektor davor leicht anders aussehen, aber das dürfte kein Thema sein.
Wie sähe das denn aus? 'div > :first'? Da käme ich um das Löschen der restlichen, folgenden nicht herum. Das wäre letztlich nicht einfacher als empty().append().
Siehe oben $('div>button').replaceWith(neuer_button);
Gibts nicht sowas wie html() nur für DOM-Elemente?
Wenn du tatsächlich alles wegschmeissen (unabhängig der Anzahl der Elemente) und durch etwas anderes (eine ggf. andere Anzahl an Elementen) ist empty().append() sicher das vernünftigste ja. Das tut dann ansich das was .html() tut, nur mit DOM-Elementen.