Как использовать JQuery “после” селектора

Я, может казаться, не выясняю хороший способ сделать это, но кажется, что это должно быть просто. У меня есть элемент, что я хочу append a div кому. Затем у меня есть другой элемент, который я хочу клонировать и пихнуть в то промежуточное отделение. Вот то, что я надеялся сделать:

$("#somediv > ul").after("<div id='xxx'></div>").append($("#someotherdiv").clone());

Это, кажется, близко, но не совсем там. Проблема с этим состоит в том, что "добавление", кажется, воздействует на оригинал #somediv > ul селектор. Этот вид имеет смысл, но это не то, что я хотел. Как я могу наиболее эффективно выбрать то промежуточное отделение, которое я добавил с after и помещенный мой #someotherdiv в него?

8
задан Priyanga 18 October 2019 в 05:28
поделиться

3 ответа

Пойдите наоборот и использование insertAfter().

$("<div id='xxx'></div>")
    .append($("#someotherdiv").clone())
    .insertAfter("#somediv > ul")

Попытайтесь добавить свои сгенерированные узлы DOM к документу только после окончания Вашей работы.

После того как узлы добавляются к отображенному документу, браузер начинает слушать любое изменение для обновления представления. Выполнение всей работы прежде, чем добавить узлы к отображенному документу действительно улучшает производительность браузера.

9
ответ дан 5 December 2019 в 12:15
поделиться

используйте insertAfter ():

$("<div id='xxx'></div>").insertAfter("#somediv > ul").append($("#someotherdiv").clone())
5
ответ дан 5 December 2019 в 12:15
поделиться

Как я могу наиболее эффективно выбрать то промежуточное отделение, которое я добавил с "после" и поместил свой "#someotherdiv" в него?

Решением @Vincent является, вероятно, самый быстрый способ получить тот же результат. Однако, если по любой причине Вы должны добавить отделение с after() затем должен выбрать его и воздействовать на него, можно использовать

.nextAll( [expr] )

Find all sibling elements after the current element.
Use an optional expression to filter the matched set.

Таким образом, Ваш js становится:

$("#somediv > ul")
    .after("<div id='xxx'></div>")
    .nextAll('#xxx')
    .append($("#someotherdiv").clone());
0
ответ дан 5 December 2019 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: