如何将 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...)
为了使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...)