如何将jQuery元素添加到现有元素的末尾(而不是将其附加到每个元素的末尾)?

时间:2019-05-31 16:40:38

标签: jquery dom insertafter

为了使appendTo工作,必须有一个包装器,否则它将添加两个副本(每个div一个):

let $canvas = $(`<div></div>`, {html: `<div>1</div><div>2</div>`});
let $editor = $(`<div></div>`);
$editor.appendTo($canvas);
initializeEditor($editor);

是否有一种方法可以添加到末尾,从而不需要换行?我像这样尝试过insertAfter,但似乎什么也没做:

let $canvas = $(`<div>1</div><div>2</div>`);
let $editor = $(`<div></div>`);
$editor.insertAfter($canvas);
initializeEditor($editor);

1 个答案:

答案 0 :(得分:1)

鉴于您的特定情况,我建议您切换回纯字符串。

let canvas = '<div>1</div><div>2</div>';
let editor = '<div></div>';

canvas += editor;
initializeEditor($(canvas));

或者类似的东西。现在为什么我建议这样做?例如,每次执行$(html)时,都是使jQuery将HTML解析为文档片段中的DOM节点。切换回字符串,您删除了这两个操作,转而使用了简单的字符串连接。

然后,将html放下,如果需要,可以将它作为jQuery对象传递到方法中。

否则,您可以减小要在...之后插入的元素的范围。

$editor.insertAfter($canvas.last())

或者只是将元素添加到jQuery对象结果堆栈的末尾...

$canvas.add(...html...)