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