Cómo mantener una referencia jQuery usando replaceWith

Si tenemos una estructura de ejemplo como esta:

HTML

hello foo

JS

 var $foo = $('#foo'); 

y necesitamos reemplazar todo el marcado HTML para esa referencia de jQuery / nodo dada usando el método .replaceWith de jQuery, ¿cuál es la mejor práctica para mantener, respectivamente, obtener una nueva referencia de nodo ?

El problema, .replaceWith devuelve la referencia al antiguo objeto jQuery (que me parece más o menos irrazonable). De los documentos:

Sin embargo, debe tenerse en cuenta que se devuelve el objeto jQuery original. Este objeto se refiere al elemento que se ha eliminado del DOM, no al nuevo elemento que lo ha reemplazado.

Si voy como

 $foo = $foo.replaceWith('
new content
');

Me gustaría tener ese nuevo nodo referenciado / en caché en esa misma variable. Sí, podrías volver a consultar ese nodo DOM recién insertado, pero eso parece muy torpe en mi mente.

¿Hay alguna manera complicada de lograr eso sin la necesidad de volver a consultar el DOM?

Ejemplo: http://jsfiddle.net/Lm7GZ/1/

Use la función .replaceAll() :

 $foo = $('
new content
').replaceAll($foo);

Puede usar replaceAll() , intercambiando la fuente con el objective:

 $foo = $('
new content
').replaceAll($foo);

Podemos usar cualquiera de las formas siguientes:

 $foo = $('
hello foo
').replaceAll('#foo'); //As a target string;

O

 $foo = $('#foo'); $foo = $('
hello foo
').replaceAll($foo); //As a jQuery Object;

También podemos hacer las consultas encadenadas:

 $('
hello foo
').replaceAll('#foo').find('something into the newly added html')......