1

我习惯于在 jQuery 1.8+ 中使用 .before、.after 或 .replaceWith 处理与 DOM 断开连接的模板化内容。在 1.9 中,我们似乎完全失去了使用这些方法操作断开节点的能力,因为它们总是返回未修改的原始集。

例如:

// prepare some disconnected content, e.g. compiling templates
var $node = $('<div>before</div>');
// later do some calculations and have a need to splice some disconnected content together
var $after = $('<div class="green">after</div>');
$node.after($after)
// Add to the DOM
$('.result').append($node);

以下是演示如何打破的小提琴:

我对 jQuery 删除这种行为以保持一致性很好,但必须有一个解决方法。我不想也不应该将断开连接的节点连接到 dom 以便以这种方式操作它们。

我们如何解决 jQuery 1.9 中新的 .after、.before 和 .replaceWith 行为?

4

2 回答 2

2

与其尝试附加到不存在的 DOM,不如添加到 jQuery 选择器(即.add改为使用)。这似乎有效:

http://jsfiddle.net/hTp27/3

于 2013-01-17T07:55:44.610 回答
0

只需附加到节点:

// prepare some disconnected content, e.g. compiling templates
var $node = $('<div>before</div>');
// later do some calculations and have a need to splice some disconnected content together
var $after = $('<div class="green">after</div>');
$node.append($after)

// Add to the DOM
$('.result').append($node);
于 2013-01-17T08:03:17.823 回答