Element.insertion.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:5k
源码类别:

中间件编程

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.0.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */ /**
  2.  * @class Ext.Element
  3.  */
  4. Ext.Element.addMethods(
  5. function() {
  6. var GETDOM = Ext.getDom,
  7. GET = Ext.get,
  8. DH = Ext.DomHelper,
  9.         isEl = function(el){
  10.             return  (el.nodeType || el.dom || typeof el == 'string');  
  11.         };
  12. return {
  13.     /**
  14.      * Appends the passed element(s) to this element
  15.      * @param {String/HTMLElement/Array/Element/CompositeElement} el
  16.      * @return {Ext.Element} this
  17.      */
  18.     appendChild: function(el){        
  19.         return GET(el).appendTo(this);        
  20.     },
  21.     /**
  22.      * Appends this element to the passed element
  23.      * @param {Mixed} el The new parent element
  24.      * @return {Ext.Element} this
  25.      */
  26.     appendTo: function(el){        
  27.         GETDOM(el).appendChild(this.dom);        
  28.         return this;
  29.     },
  30.     /**
  31.      * Inserts this element before the passed element in the DOM
  32.      * @param {Mixed} el The element before which this element will be inserted
  33.      * @return {Ext.Element} this
  34.      */
  35.     insertBefore: function(el){             
  36.         (el = GETDOM(el)).parentNode.insertBefore(this.dom, el);
  37.         return this;
  38.     },
  39.     /**
  40.      * Inserts this element after the passed element in the DOM
  41.      * @param {Mixed} el The element to insert after
  42.      * @return {Ext.Element} this
  43.      */
  44.     insertAfter: function(el){
  45.         (el = GETDOM(el)).parentNode.insertBefore(this.dom, el.nextSibling);
  46.         return this;
  47.     },
  48.     /**
  49.      * Inserts (or creates) an element (or DomHelper config) as the first child of this element
  50.      * @param {Mixed/Object} el The id or element to insert or a DomHelper config to create and insert
  51.      * @return {Ext.Element} The new child
  52.      */
  53.     insertFirst: function(el, returnDom){
  54.             el = el || {};
  55.             if(isEl(el)){ // element
  56.                 el = GETDOM(el);
  57.                 this.dom.insertBefore(el, this.dom.firstChild);
  58.                 return !returnDom ? GET(el) : el;
  59.             }else{ // dh config
  60.                 return this.createChild(el, this.dom.firstChild, returnDom);
  61.             }
  62.     },
  63.     /**
  64.      * Replaces the passed element with this element
  65.      * @param {Mixed} el The element to replace
  66.      * @return {Ext.Element} this
  67.      */
  68.     replace: function(el){
  69.         el = GET(el);
  70.         this.insertBefore(el);
  71.         el.remove();
  72.         return this;
  73.     },
  74.     /**
  75.      * Replaces this element with the passed element
  76.      * @param {Mixed/Object} el The new element or a DomHelper config of an element to create
  77.      * @return {Ext.Element} this
  78.      */
  79.     replaceWith: function(el){
  80.     var me = this,
  81.      Element = Ext.Element;
  82.             if(isEl(el)){
  83.                 el = GETDOM(el);
  84.                 me.dom.parentNode.insertBefore(el, me.dom);
  85.             }else{
  86.                 el = DH.insertBefore(me.dom, el);
  87.             }
  88.         
  89.         delete Element.cache[me.id];
  90.         Ext.removeNode(me.dom);      
  91.         me.id = Ext.id(me.dom = el);
  92.         return Element.cache[me.id] = me;        
  93.     },
  94.     
  95. /**
  96.  * Creates the passed DomHelper config and appends it to this element or optionally inserts it before the passed child element.
  97.  * @param {Object} config DomHelper element config object.  If no tag is specified (e.g., {tag:'input'}) then a div will be
  98.  * automatically generated with the specified attributes.
  99.  * @param {HTMLElement} insertBefore (optional) a child element of this element
  100.  * @param {Boolean} returnDom (optional) true to return the dom node instead of creating an Element
  101.  * @return {Ext.Element} The new child element
  102.  */
  103. createChild: function(config, insertBefore, returnDom){
  104.     config = config || {tag:'div'};
  105.     return insertBefore ? 
  106.         DH.insertBefore(insertBefore, config, returnDom !== true) :
  107.         DH[!this.dom.firstChild ? 'overwrite' : 'append'](this.dom, config,  returnDom !== true);
  108. },
  109. /**
  110.  * Creates and wraps this element with another element
  111.  * @param {Object} config (optional) DomHelper element config object for the wrapper element or null for an empty div
  112.  * @param {Boolean} returnDom (optional) True to return the raw DOM element instead of Ext.Element
  113.  * @return {HTMLElement/Element} The newly created wrapper element
  114.  */
  115. wrap: function(config, returnDom){        
  116.     var newEl = DH.insertBefore(this.dom, config || {tag: "div"}, !returnDom);
  117.     newEl.dom ? newEl.dom.appendChild(this.dom) : newEl.appendChild(this.dom);
  118.     return newEl;
  119. },
  120. /**
  121.  * Inserts an html fragment into this element
  122.  * @param {String} where Where to insert the html in relation to this element - beforeBegin, afterBegin, beforeEnd, afterEnd.
  123.  * @param {String} html The HTML fragment
  124.  * @param {Boolean} returnEl (optional) True to return an Ext.Element (defaults to false)
  125.  * @return {HTMLElement/Ext.Element} The inserted node (or nearest related if more than 1 inserted)
  126.  */
  127. insertHtml : function(where, html, returnEl){
  128.     var el = DH.insertHtml(where, this.dom, html);
  129.     return returnEl ? Ext.get(el) : el;
  130. }
  131. }
  132. }());