如何使用replaceWith维护jQuery引用

时间:2012-10-01 11:02:04

标签: javascript jquery html dom

如果我们有这样的示例结构:

HTML

<div id="foo">hello foo</div>

JS

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

我们需要使用jQuery的.replaceWith方法替换给定jQuery /节点引用的整个HTML标记,分别维护获取新节点引用的最佳做法是什么?< / p>

问题是,.replaceWith返回对 jQuery对象的引用(这听起来或多或少对我不合理)。来自文档:

  

但是,必须注意返回原始jQuery对象。   该对象是指已从DOM中删除的元素,   而不是取代它的新元素。

如果我喜欢

$foo = $foo.replaceWith('<div>new content</div>');

我想在同一个变量中引用/缓存新节点。是的,您可以重新查询新插入的DOM节点,但这在我看来非常笨重。

是否有任何棘手的方法可以实现这一目标而无需重新查询DOM?

示例:http://jsfiddle.net/Lm7GZ/1/

3 个答案:

答案 0 :(得分:7)

使用.replaceAll()功能:

$foo = $('<div>new content</div>').replaceAll($foo);

答案 1 :(得分:3)

您可以使用replaceAll(),将来源与目标交换:

$foo = $('<div>new content</div>').replaceAll($foo);

答案 2 :(得分:0)

我们可以使用以下任何一种方式:

$foo = $('<div id="foo">hello foo</div>').replaceAll('#foo'); //As a target string;

OR

$foo = $('#foo');
$foo = $('<div id="foo">hello foo</div>').replaceAll($foo); //As a jQuery Object;

我们也可以进行链式查询:

$('<div id="foo">hello foo</div>').replaceAll('#foo').find('something into the newly added html')......