CompositeElement.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.CompositeElement
  3.  * @extends Ext.CompositeElementLite
  4.  * Standard composite class. Creates a Ext.Element for every element in the collection.
  5.  * <br><br>
  6.  * <b>NOTE: Although they are not listed, this class supports all of the set/update methods of Ext.Element. All Ext.Element
  7.  * actions will be performed on all the elements in this collection.</b>
  8.  * <br><br>
  9.  * All methods return <i>this</i> and can be chained.
  10.  <pre><code>
  11.  var els = Ext.select("#some-el div.some-class", true);
  12.  // or select directly from an existing element
  13.  var el = Ext.get('some-el');
  14.  el.select('div.some-class', true);
  15.  els.setWidth(100); // all elements become 100 width
  16.  els.hide(true); // all elements fade out and hide
  17.  // or
  18.  els.setWidth(100).hide(true);
  19.  </code></pre>
  20.  */
  21. Ext.CompositeElement = function(els, root){
  22.     this.elements = [];
  23.     this.add(els, root);
  24. };
  25. Ext.extend(Ext.CompositeElement, Ext.CompositeElementLite, {
  26.     invoke : function(fn, args){
  27.     Ext.each(this.elements, function(e) {
  28.          Ext.Element.prototype[fn].apply(e, args);
  29.         });
  30.         return this;
  31.     },
  32.     
  33.     /**
  34.     * Adds elements to this composite.
  35.     * @param {String/Array} els A string CSS selector, an array of elements or an element
  36.     * @return {CompositeElement} this
  37.     */
  38.     add : function(els, root){
  39.     if(!els){
  40.             return this;
  41.         }
  42.         if(typeof els == "string"){
  43.             els = Ext.Element.selectorFunction(els, root);
  44.         }
  45.         var yels = this.elements;        
  46.     Ext.each(els, function(e) {
  47.          yels.push(Ext.get(e));
  48.         });
  49.         return this;
  50.     },    
  51.     
  52.     /**
  53.      * Returns the Element object at the specified index
  54.      * @param {Number} index
  55.      * @return {Ext.Element}
  56.      */
  57.     item : function(index){
  58.         return this.elements[index] || null;
  59.     },
  60.     indexOf : function(el){
  61.         return this.elements.indexOf(Ext.get(el));
  62.     },
  63.         
  64.     filter : function(selector){
  65. var me = this,
  66. out = [];
  67. Ext.each(me.elements, function(el) {
  68. if(el.is(selector)){
  69. out.push(Ext.get(el));
  70. }
  71. });
  72. me.elements = out;
  73. return me;
  74. },
  75. /**
  76.     * Calls the passed function passing (el, this, index) for each element in this composite.
  77.     * @param {Function} fn The function to call
  78.     * @param {Object} scope (optional) The <i>this</i> object (defaults to the element)
  79.     * @return {CompositeElement} this
  80.     */
  81.     each : function(fn, scope){        
  82.         Ext.each(this.elements, function(e,i) {
  83.         return fn.call(scope || e, e, this, i);
  84.         }, this);
  85.         return this;
  86.     }
  87. });
  88. /**
  89.  * Selects elements based on the passed CSS selector to enable {@link Ext.Element Element} methods
  90.  * to be applied to many related elements in one statement through the returned {@link Ext.CompositeElement CompositeElement} or
  91.  * {@link Ext.CompositeElementLite CompositeElementLite} object.
  92.  * @param {String/Array} selector The CSS selector or an array of elements
  93.  * @param {Boolean} unique (optional) true to create a unique Ext.Element for each element (defaults to a shared flyweight object)
  94.  * @param {HTMLElement/String} root (optional) The root element of the query or id of the root
  95.  * @return {CompositeElementLite/CompositeElement}
  96.  * @member Ext.Element
  97.  * @method select
  98.  */
  99. Ext.Element.select = function(selector, unique, root){
  100.     var els;
  101.     if(typeof selector == "string"){
  102.         els = Ext.Element.selectorFunction(selector, root);
  103.     }else if(selector.length !== undefined){
  104.         els = selector;
  105.     }else{
  106.         throw "Invalid selector";
  107.     }
  108.     return (unique === true) ? new Ext.CompositeElement(els) : new Ext.CompositeElementLite(els);
  109. };
  110. /**
  111.  * Selects elements based on the passed CSS selector to enable {@link Ext.Element Element} methods
  112.  * to be applied to many related elements in one statement through the returned {@link Ext.CompositeElement CompositeElement} or
  113.  * {@link Ext.CompositeElementLite CompositeElementLite} object.
  114.  * @param {String/Array} selector The CSS selector or an array of elements
  115.  * @param {Boolean} unique (optional) true to create a unique Ext.Element for each element (defaults to a shared flyweight object)
  116.  * @param {HTMLElement/String} root (optional) The root element of the query or id of the root
  117.  * @return {CompositeElementLite/CompositeElement}
  118.  * @member Ext.Element
  119.  * @method select
  120.  */
  121. Ext.select = Ext.Element.select;