WEB开发网
开发学院网页设计JavaScript Jquery源码分析---DOM元素(下) 阅读

Jquery源码分析---DOM元素(下)

 2010-09-14 13:36:29 来源:WEB开发网   
核心提示:5.3.2 insert在IE中提供了insertAdjacentElement()方法,这个方法比insertBefore()和appendChild()好用,Jquery源码分析---DOM元素(下),为了保证兼容性,像prototype,mootools,取第一个元素,否则就是本元素 var elem = clo

5.3.2 insert

在IE中提供了insertAdjacentElement()方法,这个方法比insertBefore()和appendChild()好用。为了保证兼容性,像prototype,mootools,Ext都提供了一个类似的方法,之后在扩展出四个方法。分别在元素的前面或后面,元素的内部开始或内部结束处四个地方插入元素。

Jquery也一样,提供了domManip(),这个函数和insertAdjacentElement类似,不同的是它采用回调函数做swhere的类似参数,可见它更为灵活。

// Dom manipulate操作的函数,对于每个jQuery对象中元素都运行
  // 由callback操作args转化成的Dom 元素集合的函数。
domManip : function(args, table, reverse, callback) {
  var clone = this.length > 1, elems;          ①
  // 对当前的jquery对象中每个元素都进行操作
  return this.each(function() {
    if (!elems) {// 把args 转化为dom元素数组,追加的内容  ②
      elems = jQuery.clean(args, this.ownerDocument);
       if (reverse) elems.reverse();// 倒序
        }
    var obj = this;
  // Ie Table不兼容,要进行特殊处理
if (table && jQuery.nodeName(this, "table")// 当前元素是table? ③
         && jQuery.nodeName(elems[0], "tr"))// 要追加是tr?
obj = this.getElementsByTagName("tbody")[0]// 没有tbody,创建追加
  || this.appendChild(this.ownerDocument .createElement("tbody"));
var scripts = jQuery([]);
jQuery.each(elems, function() {//对于参数转化的每一个dom对象            // 长度大于1,就采用clone。取第一个元素,否则就是本元素
      var elem = clone ? jQuery(this).clone(true)[0] : this; ④
  
    // 执行所有 scripts 在所有的元素注入之后
  if (jQuery.nodeName(elem, "script"))scripts = scripts.add(elem); ⑤
  else { // 除去内部 scripts,同时保存起来, 为了之后的计算
    if (elem.nodeType == 1)
scripts = scripts.add(jQuery("script", elem).remove());⑥
       callback.call(obj, elem);                ⑦
     }
   });
  scripts.each(evalScript);                     ⑧
});
}
};

1 2 3 4 5 6  下一页

Tags:Jquery 源码 分析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接