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

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

 2010-09-14 13:36:29 来源:WEB开发网   
核心提示: 5.3.3 updateDom元素提供了replaceChild(),IE还提供了replaceNode(),Jquery源码分析---DOM元素(下)(3),replaceAdjacentText()方法,而jquery也为其提供了类似的方法:// 将所有匹配的元素替换成指定的HTML或

5.3.3 update

Dom元素提供了replaceChild()。IE还提供了replaceNode(),replaceAdjacentText()方法。而jquery也为其提供了类似的方法:

  // 将所有匹配的元素替换成指定的HTML或DOM元素。
  replaceWith : function(value) {
    return this.after(value).remove();// this.after(value),this没有变
 },

replaceWidth是在本对象的所有元素后面加上value元素。然后再把当前对象中的所有元素都去掉。相当于用新的元素代替了原来的元素。Jquery还提供了replaceAll实现把参数中的所有元素都用当前对象的元素来replace,如果当前对象是多个元素,那最终结果当然是最后一个元素。应该为一个元素。replaceAll(elem,[elem].. .. ..)是它的形式。

//用匹配的元素替换掉所有 selector匹配到的元素。
jQuery.each( {replaceAll : "replaceWith"},
function(name, original) {
   jQuery.fn[name] = function() {
    var args = arguments;// 每个参数和每个元素是对应起来的
    // 对当前jQuery中每个元素都进行的操作
    return this.each(function() {
      for (var i = 0, length = args.length;i < length; i++)
// 调用original代理工作 this是元素
      jQuery(args[i])[original](this);     });
  };
});

5.3.4 remove

对于删除,提供了removeChild()方法,Ie还提供removeNode(true)实现删除本元素及所有的子元素。据说这个函数会出现内存泄漏。Jquery也提供了两个方法来remove元素及释放内存。

jQuery.each( {.. .. ..
    remove : function(selector) {// 根据selector除去元素,防内存泄露①
    if (!selector || jQuery.filter(selector, [this]).r.length) {②
       // Prevent memory leaks this是指dom元素
       jQuery("*", this).add([this]).each(function() {   ③
         jQuery.event.remove(this);            ④
         jQuery.removeData(this);
       });
       if (this.parentNode)
         this.parentNode.removeChild(this);       ⑤
      }
    },
    empty : function() {// 清除元素的所有子节点
      // 删除当前对象的每个元素的的所有子节点,防止内存泄漏
      jQuery(">*", this).remove();   ⑥
      while (this.firstChild)
       // 删除余留的子节点
       this.removeChild(this.firstChild);  ⑦
    }
  }, function(name, fn) {
    jQuery.fn[name] = function() {
      return this.each(fn, arguments); ⑧
    };
  });

上一页  1 2 3 4 5 6 7  下一页

Tags:Jquery 源码 分析

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