当前位置: 首页 > news >正文

jQuery学习——克隆

.clone()

描述: 创建一个匹配的元素集合的深度拷贝副本。

  • 添加的版本: 1.0.clone( [withDataAndEvents ] )

    • withDataAndEvents (默认:  false)
      类型: Boolean
      一个Boolean值,表示是否会复制元素上的事件处理函数。从jQuery 1.4开始,元素数据也会被复制。
  • 添加的版本: 1.5.clone( [withDataAndEvents ] [, deepWithDataAndEvents ] )

    • withDataAndEvents (默认:  false)
      类型: Boolean
      一个Boolean值,表示是否会复制元素上的事件处理函数。 默认值是  false*对于1.5.0的默认值被不适当地设置成了true,将在1.5.1以上改回false 。
    • deepWithDataAndEvents (默认:  value of withDataAndEvents)
      类型: Boolean
      一个布尔值,指示是否对事件处理程序和克隆的元素的所有子元素的数据应该被复制。默认情况下它的值相匹配的第一个参数的值( 默认值是  false

.clone()方法深度 复制所有匹配的元素集合,包括所有匹配元素、匹配元素的下级元素、文字节点。出于性能方面的考虑,表单元素动态的状态(例如,用户将数据输入到input和 textarea,或者 用户在select中已经选中某一项)不会被复制到克隆元素。克隆操作将设置  这些字段为HTML中指定的默认值。

注意: 使用.clone()可能产生id属性重复的元素的副作用,id应该是唯一的。在可能的情况下,建议,应避免克隆有此属性或标识符的元素,使用类(class)属性代替。

Example: 复制所有 b 元素然后将他们插入到所有段落里面的前面。

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
 
  <b>Hello</b><p>, how are you?</p>
 
<script>
  $("b").clone().prependTo("p");
</script>
 
</body>
</html>

当使用 .clone()克隆一组元素,并且这些克隆生成的元素尚未被添加到 DOM 中,那么当这些元素被插入到 DOM 中时,不能保证是按它们的原顺序被插入的。但是,可以像下面例子中提到的那样,保证顺序的正确性:

<!DOCTYPE html>
<html>
<head>
  <style>
  #orig, #copy, #copy-correct {
    float: left;
    width: 20%;
  }
</style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
 
<div id="orig">
    <div class="elem"><a>1</a></div>
    <div class="elem"><a>2</a></div>
    <div class="elem"><a>3</a></div>
    <div class="elem"><a>4</a></div>
    <div class="elem"><a>5</a></div>
</div>
<div id="copy"></div>
<div id="copy-correct"></div>
 
<script>
// sort order is not guaranteed here and may vary with browser
$('#copy').append($('#orig .elem')
          .clone()
          .children('a')
          .prepend('foo - ')
          .parent()
          .clone());
 
// correct way to approach where order is maintained
$('#copy-correct')
          .append($('#orig .elem')
          .clone()
          .children('a')
          .prepend('bar - ')
          .end());
</script>
 
</body>
</html>

 

转载于:https://www.cnblogs.com/pilee/p/3478476.html

相关文章:

  • IBM WebSphere MQ介绍安装以及配置服务详解
  • 思维导图—你不知道的JavaScript中卷
  • C# 类相同属性赋值
  • MVC验证
  • UVa10305 拓扑排序
  • 专科程序员与本科程序员之间有什么区别?
  • HTTP协议
  • 算法一:动态规划
  • Redis学习笔记 - pipline(流水线、管道)
  • nginx模块学习七 http_refer 防盗链
  • 【转】复利的营销力量
  • Disruptor - 介绍(1)
  • ASIHTTPRequest使用指南---翻译稿
  • 观察者模式
  • 分表分库之一:分布式数据库的常见用法
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Angular 响应式表单之下拉框
  • Apache的80端口被占用以及访问时报错403
  • CentOS6 编译安装 redis-3.2.3
  • CSS相对定位
  • golang中接口赋值与方法集
  • Java深入 - 深入理解Java集合
  • js
  • js操作时间(持续更新)
  • Js基础——数据类型之Null和Undefined
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • NSTimer学习笔记
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Otto开发初探——微服务依赖管理新利器
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue全家桶实现一个Web App
  • 从0到1:PostCSS 插件开发最佳实践
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 使用Gradle第一次构建Java程序
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 再次简单明了总结flex布局,一看就懂...
  • mysql面试题分组并合并列
  • Spring第一个helloWorld
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ###项目技术发展史
  • #{}和${}的区别是什么 -- java面试
  • #13 yum、编译安装与sed命令的使用
  • (03)光刻——半导体电路的绘制
  • (16)Reactor的测试——响应式Spring的道法术器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (floyd+补集) poj 3275
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (libusb) usb口自动刷新
  • (pytorch进阶之路)扩散概率模型
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二十三)Flask之高频面试点
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)ssm经济信息门户网站 毕业设计 141634