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

How to add jQuery element to the end of existing elements (instead of appending it to each)?

为了使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);

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

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...)