在jQuery中拆分列表-考虑内存和可重用性

在jQuery中拆分列表-考虑内存和可重用性,jquery,list,memory,split,reusability,Jquery,List,Memory,Split,Reusability,我试图在jQuery中编写一个函数来拆分列表——或者说,拆分任何有子元素的元素——这个函数意识到内存的使用,并且足够通用,可以广泛地重用,但是我很难解决这些问题 为了便于讨论(并保持代码的正确性),让我们假设我试图在元素3之后将列表拆分为两个列表。我没有检查我的代码的语法错误或其他任何东西-希望你知道我在做什么 选项一是编写如下函数: var list = $('ul.listCopy'); var newList = $('<ul class="listCopy" />'); va

我试图在jQuery中编写一个函数来拆分列表——或者说,拆分任何有子元素的元素——这个函数意识到内存的使用,并且足够通用,可以广泛地重用,但是我很难解决这些问题

为了便于讨论(并保持代码的正确性),让我们假设我试图在元素3之后将列表拆分为两个列表。我没有检查我的代码的语法错误或其他任何东西-希望你知道我在做什么

选项一是编写如下函数:

var list = $('ul.listCopy');
var newList = $('<ul class="listCopy" />');
var latterElements = list.children('li:gt(3)').remove();
newList.append(latterElements);
list.after(newList);
这很一般,我可以复制任何东西,但问题是我要复制整个列表。如果我需要使用这个程序来划分一个特别长的列表,我会担心内存的影响

我想做的理想事情是复制一个元素,但只复制元素本身,而不复制其子元素。我不想复制任何我最终要删除的东西。有没有办法做到这一点?我看到的大多数插件和函数都会选择这种或那种方式

谢谢

使用。如果未将
true
作为参数传递,则不会克隆任何子级

示例:


从原始列表中删除元素,并将其移动到新位置(在本例中为
newList
)。

您是否在一个很长的列表中对其进行了测试,并验证了您的假设,即它的性能会很差?您可能过早地对其进行了优化。是的,但我认为如果存在一种只复制节点的方法,而不是复制整个元素及其子元素的方法,那么我最好不要浪费一些周期。我只是想知道,以备将来参考。
var list = //something
var newList = list.clone();
newList.children(':lt(4)').remove();
list.children(':gt(3)').remove();
    // Original element
var list = $('ul');
    // Clone of original (top level only)
var newList = list[0].cloneNode();
    // Append children greater than index 3 to the new element
list.children(':gt(3)').appendTo(newList);