位置: 编程技术 - 正文

jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点(jquery.min.js源代码)

编辑:rootadmin

推荐整理分享jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点(jquery.min.js源代码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:jquery源码实现原理,jquery animate源码,jquery源码分析,jquery开源,jquery fadein 源码,jquery源码分析,jquery源码实现原理,jquery源码分析,内容如对您有帮助,希望把文章链接给更多的朋友!

什么情况下使用到克隆节点?

  我们知道在对DOM操作过程中如果直接使用节点会出现节点随操作而变动的情况。比如对节点使用.after/.before/.append等方法后,节点被添加到新的地方,原来的位置上的节点被移除了。有的时候需要保留原来位置上的节点,仅仅是需要一个副本添加到对应位置,这个时候克隆就有了使用场景。

  jQuery.fn.clone克隆当前匹配元素集合的一个副本,并以jQuery对象的形式返回。

  你还可以指定是否复制这些匹配元素(甚至它们的子元素)的附加数据( data()函数 )和绑定事件。

  jQueyr.fn.clone: function( withDataAndEvents, deepDataAndEvents )参数描述

a.克隆函数的底层实现步骤分解如下(jQuery.clone)

  第一步,先克隆出DOM节点。对支持正确的节点克隆(即支持elem.cloneNode并保证克隆无误)的DOM节点直接使用cloneNode(true),否则自建一个节点来保存被克隆数据然后获取该节点。

  第二步,如果是IE浏览器下,则需要通过fixCloneNodeIssues( node, destElements[i] );来逐个修正IE克隆问题。IE克隆解决方案全部包含在了fixCloneNodeIssues中,下一节详细分析。里面的jQuery.support内容点击这里查看更多

  第三步,如果要克隆缓存数据(包括普通数据和绑定事件),克隆之。

备注:cloneCopyEvent函数中会将原节点的数据保存到克隆节点中,然后将原节点的事件绑定到新的克隆节点上

jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点(jquery.min.js源代码)

  第四步,保护script计算历史(全局性地标记scripts代码段已经被执行过了),并回收内存,返回克隆节点。

b.IE克隆问题汇总fixCloneNodeIssues(src,dest)

  src是原节点,dest是src的克隆节点。

  IE克隆问题列一下(IE8+)

  1.IE6-8当使用cloneNode会克隆事件(这些事件绑定通过attachEvent)。为保证统一性,需要清除克隆的事件,为后续统一克隆事件做准备

  2.IE8-克隆脚本标签script的时候克隆的内容结果会是空白。我们需要给他重新赋值,并确保他不会执行脚本内容。

  3.IE6-不能克隆使用的classid获取的对象元素的子节点。IE下,如果父节点为null,则会抛出NoModificationAllowedError异常。需要使用原节点的outerHTML和innerHTML重新赋值。

  4.IE6-8无法克隆一个复选框或单选按钮的选中状态。需要主动设置。

  5.当克隆select标签时,IE6-8无法正确返回select默认选中状态。需要主动设置。

  6.当克隆其他类型的input和textare标签时,IE6-8不能正确设置defaultValue为正确的值。需要主动设置。

  里面用到disableScript这个函数。函数目的是改变script的type,从而保证在给script赋值后不会被作为脚本执行。这个方式我们可以借鉴

以上内容是小编给大家介绍的关于jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点的全部叙述,希望大家喜欢。

基于jQuery实现网页打印功能 直接上代码!DOCTYPEhtmlheadmetacharset="utf-8"metahttp-equiv="X-UA-Compatible"content="IE=edge"titleindex/title/headbodydivstyle="text-align:center;margin-top:px"divid="printArea"div......文本

jquery实现全选、反选、获得所有选中的checkbox 举了7个不同的checkbox状态,和大家一一分享。1、全选$("#btn1").click(function(){$("input[name='checkbox']").attr("checked","true");})2、取消全选(全不选)$("#btn2").click(f

基于jQuery实现的双天猫拆红包抽奖效果 本文实例讲述了jQuery实现的双天猫拆红包抽奖效果代码,是一款基于jquery+css3实现的鼠标点击红包摇一摇抽奖代码,具有点击抽奖后红包摇动并弹出抽

标签: jquery.min.js源代码

本文链接地址:https://www.jiuchutong.com/biancheng/376170.html 转载请保留说明!

上一篇:快速学习jQuery插件 Cookie插件使用方法(jquery教程chm)

下一篇:基于jQuery实现网页打印功能(用jquery制作网页)

  • 电费发票隔月开如何做账
  • 销售商品的差价怎么算
  • 领用工程物资的账务处理
  • 企业的书报费应计入销售费用
  • 车船税每年都要交吗,一般是多少钱交强险可以晚交吗
  • 高新企业申报指南
  • 开票和预缴税款跨月
  • 从事股权投资业务如何界定
  • 小规模纳税人季报是哪几个月
  • 发票领回来了怎么读入发票
  • 定期定额纳税申报表应税项应填哪个数
  • 多开的增值税发票交多少税
  • 会计中预付款包括
  • 营改增后房产税计入什么科目
  • 递延所得税资产和负债怎么理解
  • 金税盘怎么清盘视频
  • 学校方面的增值税的问题
  • 公司缴纳电费
  • 杨志勇财政
  • 收到未到期的银行承兑汇票会计分录
  • 汇算清缴做完还能改账么
  • 个体工商户200万以下减半
  • 生产型企业进出口初申报流程
  • 中央空调销售与安装开票税率
  • 外贸企业汇兑损益要交所得税吗
  • 无票业务如何处理
  • wwwxxx域名选择(www.xxx.com或者.cn)
  • explorer.exe是啥意思
  • 推荐一款免费的vba编辑器
  • 国家规定不计入社保基数
  • 上飞机可以带2个充电宝吗
  • 会计账务处理年限规定
  • php框架symfony
  • 一般纳税人的好处和坏处
  • springboot整合websocket怎么接受图片消息
  • 接待客人的场合
  • 不能加计扣除的研发费用在辅助账怎么反映
  • 帝国cms要授权吗知乎
  • 返利销售的增值税怎么算
  • 已经抵扣的发票红字信息表怎么开
  • 幼儿园收费怎么说
  • 普通发票有什么
  • 项目支出可以列办公费吗
  • 全年一次性奖金税率表2023最新
  • 旅游业营改增会计分录
  • 营业外支出账户核算的主要内容有
  • 本年利润是什么性质的科目
  • 小规模纳税人有个人所得税吗?
  • 银行承兑汇票提示付款期为几天
  • 修理费未收到发票怎么办
  • 预付费用款项现金流量怎么算
  • 接受捐赠固定资产存货等有相关凭据的其成本按什么确定
  • 出库单与入库单一样吗
  • 旅游饮食服务业与营业无关的收入计入营业外收入账户
  • mysql 优化口诀
  • win10 mysql 5.6.35 winx64免安装版配置教程
  • win8系统和win7哪个好
  • 猎豹如何添加兼容性站点
  • xp 修复
  • windows 安装app
  • Win10预览版怎么变回正式版
  • 苹果mac 最新系统
  • uefi bios ufilify
  • awk实例
  • 人物动画声音随声而动
  • easyui datagrid loader
  • linux用python
  • python正则批量替换字符串
  • 基于javascript的毕业设计选题
  • js写一个类
  • json遍历对象集合
  • 如何查询车辆购买的保险
  • 请领导批示的格式
  • 纽约消费税多少
  • 如何办理委托银行卡业务
  • 山西国税电子税务局电话
  • 多缴税款可以抵顶以后欠费的税款吗
  • 会计审计和税务服务属于什么税目
  • 出口货物免抵税额怎么申报附加税
  • 印花税零申报表怎么填步骤
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设