Как добавить элемент jQuery в конец существующих элементов (вместо добавления его к каждому)? - PullRequest
0 голосов
/ 31 мая 2019

Чтобы заставить 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 Ответ

1 голос
/ 31 мая 2019

Учитывая ваш конкретный сценарий, я бы посоветовал вам вернуться к простым строкам.

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