博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jquery实现复制的两种方式
阅读量:6876 次
发布时间:2019-06-26

本文共 1173 字,大约阅读时间需要 3 分钟。

---恢复内容开始---

jquery两种复制元素的方式:

1.$("seletor").clone(param1,param2)有两个可选参数(布尔类型),默认都是false。param1代表是否复制事件。param2代表是否对事件处理程序和克隆的元素的所有子元素的数据进行复制

Html代码:
Hello

, how are you?

jQuery 代码:
$("b").clone().prependTo("p");
结果:
<b>Hello</b><p><b>Hello</b>, how are you?</p>
HTML 代码:
jQuery 代码:
$("button").click(function(){  $(this).clone(true).insertAfter(this);//新复制的按钮也会有click事件});

2.jQuery.extend([deep], target, object1, [objectN])//用一个或多个其他对象来扩展一个对象,返回被扩展的对象。

如果不指定target,则给jQuery命名空间本身进行扩展。 如果第一个参数设置为true,则jQuery返回一个深层次的副本,递归地复制找到的任何对象。否则的话,副本会与原对象共享结构。 未定义的属性将不会被复制,然而从对象的原型继承的属性将会被复制。

deep:如果设为true,则递归合并。

target:待修改对象。

object1:待合并到第一个对象的对象。

objectN:待合并到第一个对象的对象。

根据这个方法的特性,我们可以这样实现jquery的复制功能。

//浅复制,只复制第一层节点

jQuery extend({}, oldObject) 

//深度复制,循环复制每层节点

jQuery.extend(true, {}, oldObject);

var obj1={

  'a': 's1',

  'b': [1,2,3,{'a':'s2'}],
  'c': {'a':'s3', 'b': [4,5,6]

};

var obj2 = $.extend(true, {}, obj1);

obj2.a='s1s1';
obj2.b[0]=100;
obj2.c.b[0]=400;

console.log(obj1);

console.log(obj2);

obj2 内部元素的值改变之后,如果 obj1 的相应值保持不变,就说明复制成功。

本文参考资料:jquery API和http://www.php100.com/html/program/jquery/2013/0905/6007.html

转载于:https://www.cnblogs.com/zhangye/p/3522547.html

你可能感兴趣的文章
C#简单的面试题目(五)
查看>>
讲故事学Socket编程
查看>>
ural(Timus) 1037. Memory Management
查看>>
jquery实现菜单的折叠并且变换图片
查看>>
微信公众平台消息接口开发(27)彩票查询
查看>>
hdu 1829+hdu 1856(并查集)
查看>>
WIN32 DLL动态链接库
查看>>
用vmware运行简单的引导代码
查看>>
WPF中资源文件的使用
查看>>
Request 分别获取具有相同 name 属性表单元素值
查看>>
错误码:2003 不能连接到 MySQL 服务器在 (10061)
查看>>
js判断文件格式及大小
查看>>
如何确定当前的PowerShell的版本?
查看>>
浅谈json以及一些常用的解析
查看>>
关于编程的一些思考
查看>>
iphone之NSArray比较大小
查看>>
字母列拉丁方块填数字
查看>>
专业卡与游戏卡的区别
查看>>
javaSocket与C通信
查看>>
artdialog的图片,标题,以及关闭按钮不显示的问题
查看>>