我试图写在jQuery的一个函数,将分裂名单 - 还是真的,有孩子的任何元素 - 这是有意识的记忆中使用,而且一般足以被广泛重用,但我无法分辨这些彼此抵靠。

有关参数的缘故(并保持对点的代码)让我们说我想元素后三到列表分为两个列表。我不检查我的代码的语法错误或其他任何东西 - 希望你得到什么,我试图做的想法

选项之一是写这样的功能:

var list = $('ul.listCopy');
var newList = $('<ul class="listCopy" />');
var latterElements = list.children('li:gt(3)').remove();
newList.append(latterElements);
list.after(newList);

这是伟大的,但它仅适用,只要我知道的类型和元素的属性。我会写一个单独的函数,如果我是分裂,内带多个div,或OL,或任何一个div。如果该元素有一个类或角色或其他任何HTML属性,我希望能够给它,而不用担心种自定义属性可能会拿出在未来什么复制。我想使这个一般足以应付任何类型的元素。这是选项2:

var list = //something
var newList = list.clone();
newList.children(':lt(4)').remove();
list.children(':gt(3)').remove();

这是一般不够,我可以做任何事情的副本,但问题是,我做了整个名单的副本。如果我需要使用这个程序来划分一个特别长的名单,我担心记忆的影响。

我想这样做的理想的事情是让一个元素的副本,但只复制元素本身,有没有它的孩子。我不希望有复制任何东西,我要结束了删除。有没有办法做这样的事情?大多数我见过的插件和功能的选择单程或其他。

谢谢!

有帮助吗?

解决方案

使用天然cloneNode()方法。如果您没有通过true作为参数,它没有任何克隆孩子。

示例: http://jsfiddle.net/4rYxE/

    // 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);

使用.appendTo() 去除从原始列表中的元素,并且将它们移动到它们的新位置(在这种情况下,newList)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top