Итак, вы начинаете с одного ul
с одного li
с div
, содержащего целую кучу изображений, и вы хотите разделить его на набор li
с, каждый из которых содержит 8 изображений право? Если это так, это будет работать:
var images = $("img");
while (images.length > 8) {
images.slice(8, 16).appendTo("ul").wrapAll("<li><div></div></li>");
images = images.slice(16);
}
По сути, он отсекает 8 фрагментов изображений из коллекции изображений и добавляет их обратно в ul
за свои li
с (он оставляет исходный li
с первыми 8 изображениями). Очевидно, вам нужно настроить селекторы, так как, вероятно, у вас есть другие изображения и неупорядоченные списки на вашей странице.
Редактировать : объяснить причину, по которой .after
работает не так, как вы ожидали - я считаю, что jQuery пытается манипулировать DOM, а не необработанным HTML. Таким образом, вы не можете просто добавлять случайные фрагменты HTML, если они не могут быть проанализированы и превращены в реальные DOM-узлы. Другими словами, контент, который вы передаете .after
, фактически должен быть действительным и полным фрагментом HTML сам по себе. Итак, поскольку jQuery не может понять, как превратить что-то вроде «</div></li><li><div>
» в узел, он действует немного странно (я полагаю, в этом случае он игнорирует два начальных тега close, поскольку они не делают самостоятельно, а затем создайте узлы li
& div
и затем автоматически закроете их для вас).