如果我们有这样的示例结构:
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?
答案 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')......