9

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

HTML

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

JS

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

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

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

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

如果我去喜欢

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

我希望在同一个变量中引用/缓存该新节点。是的,您可以重新查询新插入的 DOM 节点,但在我看来这似乎很笨拙。

有没有什么棘手的方法可以在不需要重新查询 DOM 的情况下实现这一点?

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

4

3 回答 3

7

使用.replaceAll()功能:

$foo = $('<div>new content</div>').replaceAll($foo);
于 2012-10-01T11:06:22.330 回答
3

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

$foo = $('<div>new content</div>').replaceAll($foo);
于 2012-10-01T11:06:28.987 回答
0

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

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

或者

$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')......
于 2014-05-25T11:14:15.417 回答