jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在jQuery中拆分列表 – 意识到内存和可重用性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在jQuery中编写一个函数来分割列表 – 或者实际上,任何有孩子的元素 – 都意识到内存的使用并且通用性足以被广泛重用,但是我无解决这些问题. .

为了争论(并保持代码在点上),让我们说我试图将列表拆分为元素三之后的两个列表.我没有检查我的代码是否存在语法错误或其他任何问题 – 希望您能够了解我正在尝试做什么.

选项一是编写这样的函数

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

这很棒,但只有在我知道元素的类型和属性的情况下它才有效.如果我在其中分割一个包含多个div的div,或者OL,或者其他什么,我将不得不编写一个单独的函数.如果元素具有类或角色或任何其他html属性,我希望能够复制它而不必担心将来会出现什么样的自定义属性.我想让这个通用足以处理任何类型的元素.这是选项二:

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

这很通用,我可以复制任何东西,但问题是我正在复制整个列表.如果我需要使用这个程序划分一个特别长的列表,我担心内存的影响.

我想要做的理想事情是制作一个元素的副本,但只复制元素本身,而不是它的子元素.我不想复制我最终要删除内容.有没有办法做这样的事情?我见过的大多数插件功能都选择了这种或那种方式.

谢谢!

解决方法

使用 native cloneNode() method.如果未将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);@H_301_16@ 
 

Using .appendTo()从原始列表中删除元素,并将它们移动到新位置(在本例中为newList).

大佬总结

以上是大佬教程为你收集整理的在jQuery中拆分列表 – 意识到内存和可重用性全部内容,希望文章能够帮你解决在jQuery中拆分列表 – 意识到内存和可重用性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。