• 西安外事学院在省茶艺大赛中创多项佳绩西安外事学院-陕西教育新闻 2019-10-25
  • 人民网评:让军人成为全社会最尊崇的职业 2019-10-17
  • 新规:续航150公里以下新能源车取消补贴 2019-10-11
  • 法国革命时代,女人流行穿什么 2019-10-11
  • 黑龙江省县(市、区)委统战部长培训班举办 2019-10-06
  • “夏季第一瓜”竟是它! 2019-10-06
  • 《阿古顿巴》藏语版在藏语卫视首播 2019-09-06
  • 晋中市“三同步”推动互联网治理创新 2019-08-27
  • 法媒:研究称美国人常用药物或增加抑郁风险 2019-08-27
  • 宝贝是地名,你能想到这么浪漫的地名在哪儿吗? 2019-08-15
  • 何树山副省长到方圆机电调研指导工作 2019-08-15
  • 山东11选5推荐任三预测:jQuery.buildFragment使用方法及思路分析

    来源:本网整理
    一、jQuery.buildFragment使用方法
    1、参数
    jQuery.buildFragment( args, context, scripts );2、返回值
    return { fragment: fragment, cacheable: cacheable };
    二、思路分析
    1、处理context参数
    根据传入到context参数值的不同,确保context为文档根节点document
    2、限制可缓存条件
    2.1、字符串小于512字节
    2.2、字符串不存在option标签(克隆option标签会丢失选中状态,因此不缓存)
    2.3、字符串不存在<object>,<embed>标签(IE 6不能把<object>,<embed>标签嵌入到文档碎片中)
    2.4、字符串不存在checked属性(只针对克隆拥有checked属性节点时丢失选中状态的浏览器,如:Safria)
    2.5、字符串中不存在html5标签(只针对不支持html5标签的浏览器)
    3、处理args数组
    通过jQuery.clean函数格式化处理数组项字符串,并生成dom节点添加到文档碎片中
    4、判断缓存值
    如果缓存值为由clean函数处理的文档碎片,则数组项字符串略过clean函数处理
    5、返回值
    函数返回一个对象,保存文档碎片和可缓存状态
    三、源码注释分析
    【基于jQuery1.8.3】
    复制代码 代码如下:
    var rnocache = /<(?:script|object|embed|option|style)/i,
    rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
    rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i");
    jQuery.fragments = {};
    jQuery.buildFragment = function( args, context, scripts ) {
    var fragment, cacheable, cachehit,
    first = args[ 0 ];
    // Set context from what may come in as undefined or a jQuery collection or a node
    // Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &
    // also doubles as fix for #8950 where plain objects caused createDocumentFragment exception
    // 根据参数context值的不同,确保context为文档根节点document
    // jQuery1.8.0版本以后代码相对于之前版本有很大改进,以下是改进地方:
    // 针对context参数值为undefined, jQuery对象,DOM元素节点情况改进代码
    // 解决了1.8.0版本中context参数为文档片段(#document-fragment)的bug
    context = context || document;
    context = !context.nodeType && context[0] || context;
    context = context.ownerDocument || context;
    // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
    // Cloning options loses the selected state, so don't cache them
    // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
    // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
    // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501
    // html字符串小于512字节
    // 克隆option标签会丢失选中状态,因此不缓存
    // IE 6不能把<object>,<embed>标签嵌入到文档碎片中
    // WebKit浏览器(如:Safria)克隆拥有checked属性节点时,也会丢失选中状态,因此不缓存,google最新版本不存在该bug
    // 最后,IE6,7、8不会正确地重用由html5标签元素创建的缓存片段
    if ( args.length === 1 && typeof first === "string" && first.length < 512 && context === document &&
    first.charAt(0) === "<" && !rnocache.test( first ) &&
    // 如果浏览器能够克隆checked属性和支持html5,或者html字符串中不存在checked和html5标签元素
    (jQuery.support.checkClone || !rchecked.test( first )) &&
    (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {
    // Mark cacheable and look for a hit
    // 如果以上条件都满足,则打上可缓存标记
    cacheable = true;
    // 将数组项字符串(主要是html字符串)缓存到jQuery.fragment对象的属性列表中,并获取缓存值
    // 如果clean函数已经处理过了第二次相同的字符串内容,缓存值则为clean函数处理的文档碎片,字符串解析可以略过clean处理
    fragment = jQuery.fragments[ first ];
    // 在clean函数处理了第一次字符串(与第二次相同)后,cachehit为true
    cachehit = fragment !== undefined;
    }
    // 判断缓存值
    if ( !fragment ) {
    fragment = context.createDocumentFragment();
    // 通过clean函数处理args数组,将数组每一项字符串都生成dom节点,
    // 并且添加到提供的文档碎片(fragment)中,因此返回的对象中的fragment属性
    // 保存了参数args数组项字符串生成的dom节点
    jQuery.clean( args, context, fragment, scripts );
    // Update the cache, but only store false
    // unless this is a second parsing of the same content
    // 当cachehit为true时,jQuery.fragment[first]为clean函数处理的文档碎片
    if ( cacheable ) {
    jQuery.fragments[ first ] = cachehit && fragment;
    }
    }
    return { fragment: fragment, cacheable: cacheable };
    };

    彩票双色球历史开奖结果 www.s9h6.com

  • 本文相关:
  • 打豆豆小游戏 用javascript编写的[打豆豆]小游戏
  • 滚动图片效果 jquery实现回旋滚动效果
  • windows系统下简单nodejs安装及环境配置
  • 12款经典的白富美型—jquery图片轮播插件—前端开发必备
  • javascript 系统文件夹文件操作及参数介绍
  • jquery Mobile入门—多页面切换示例学习
  • jquery Moblie入门—hello world的示例代码学习
  • jquery Mobile入门—外部链接切换示例代码
  • jquery插件珍藏(图片局部放大/信息提示框)
  • Raphael一个用于在网页中绘制矢量图形的Javascript库
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 彩票双色球历史开奖结果 - 频道导航
    Copyright © 2017 彩票双色球历史开奖结果 www.s9h6.com All Rights Reserved
  • 西安外事学院在省茶艺大赛中创多项佳绩西安外事学院-陕西教育新闻 2019-10-25
  • 人民网评:让军人成为全社会最尊崇的职业 2019-10-17
  • 新规:续航150公里以下新能源车取消补贴 2019-10-11
  • 法国革命时代,女人流行穿什么 2019-10-11
  • 黑龙江省县(市、区)委统战部长培训班举办 2019-10-06
  • “夏季第一瓜”竟是它! 2019-10-06
  • 《阿古顿巴》藏语版在藏语卫视首播 2019-09-06
  • 晋中市“三同步”推动互联网治理创新 2019-08-27
  • 法媒:研究称美国人常用药物或增加抑郁风险 2019-08-27
  • 宝贝是地名,你能想到这么浪漫的地名在哪儿吗? 2019-08-15
  • 何树山副省长到方圆机电调研指导工作 2019-08-15
  • 玩21点说的话 007大战皇家赌场 骰宝大小必胜法 欢乐生肖最精准人工计划 曾道人一句解特码 双色球机选爱彩网 北京时时彩开奖信息 伦敦奥运会男子排球 福彩刮刮奖害人 3d试机号情况统计 竞彩 2017网上靠谱的赚钱方法 剑侠世界手游官网下载 捕鱼大师aqq官方网站 河北快三五百期走势图