webgui/www/extras/extjs/docs/output/CompositeElement.jss.html

205 lines
No EOL
8.1 KiB
HTML

<html><head><title>CompositeElement.js</title><link rel="stylesheet" type="text/css" href="../resources/style.css" media="screen"/></head><body><h1>CompositeElement.js</h1><pre class="highlighted"><code><i>/**
* @class Ext.CompositeElement
* Standard composite class. Creates a Ext.Element <b>for</b> every element <b>in</b> the collection.
* &lt;br&gt;&lt;br&gt;
* &lt;b&gt;NOTE: Although they are not listed, <b>this</b> class supports all of the set/update methods of Ext.Element. All Ext.Element
* actions will be performed on all the elements <b>in</b> this collection.&lt;/b&gt;
* &lt;br&gt;&lt;br&gt;
* All methods <b>return</b> &lt;i&gt;<b>this</b>&lt;/i&gt; and can be chained.
&lt;pre&gt;&lt;code&gt;
<b>var</b> els = getEls(&quot;#some-el div.some-class&quot;);
<i>// or</i>
<b>var</b> els = Ext.Element.select(&quot;#some-el div.some-class&quot;);
els.setWidth(100); <i>// all elements become 100 width</i>
els.hide(true); <i>// all elements fade out and hide</i>
<i>// or</i>
els.setWidth(100).hide(true);
&lt;/code&gt;&lt;/pre&gt;
*/</i>
Ext.CompositeElement = <b>function</b>(els){
<b>this</b>.elements = [];
<b>this</b>.addElements(els);
};
Ext.CompositeElement.prototype = {
isComposite: true,
addElements : <b>function</b>(els){
<b>if</b>(!els) <b>return</b> this;
<b>if</b>(typeof els == &quot;string&quot;){
els = Ext.Element.selectorFunction(els);
}
<b>var</b> yels = <b>this</b>.elements;
<b>var</b> index = yels.length-1;
<b>for</b>(var i = 0, len = els.length; i &lt; len; i++) {
yels[++index] = Ext.get(els[i], true);
}
<b>return</b> this;
},
invoke : <b>function</b>(fn, args){
<b>var</b> els = <b>this</b>.elements;
<b>for</b>(var i = 0, len = els.length; i &lt; len; i++) {
Ext.Element.prototype[fn].apply(els[i], args);
}
<b>return</b> this;
},
<i>/**
* Adds elements to <b>this</b> composite.
* @param {String/Array} els A string CSS selector, an array of elements or an element
* @<b>return</b> {CompositeElement} <b>this</b>
*/</i>
add : <b>function</b>(els){
<b>if</b>(typeof els == &quot;string&quot;){
<b>this</b>.addElements(Ext.Element.selectorFunction(els));
}<b>else</b> if(els.length !== undefined){
<b>this</b>.addElements(els);
}<b>else</b>{
<b>this</b>.addElements([els]);
}
<b>return</b> this;
},
<i>/**
* Calls the passed <b>function</b> passing (el, <b>this</b>, index) <b>for</b> each element <b>in</b> this composite.
* @param {Function} fn The <b>function</b> to call
* @param {Object} scope (optional) The &lt;i&gt;<b>this</b>&lt;/i&gt; object (defaults to the element)
* @<b>return</b> {CompositeElement} <b>this</b>
*/</i>
each : <b>function</b>(fn, scope){
<b>var</b> els = <b>this</b>.elements;
<b>for</b>(var i = 0, len = els.length; i &lt; len; i++){
<b>if</b>(fn.call(scope || els[i], els[i], <b>this</b>, i) === false) {
<b>break</b>;
}
}
<b>return</b> this;
},
<i>/**
* Returns the Element object at the specified index
* @param {Number} index
* @<b>return</b> {Ext.Element}
*/</i>
item : <b>function</b>(index){
<b>return</b> this.elements[index];
}
};
(<b>function</b>(){
Ext.CompositeElement.createCall = <b>function</b>(proto, fnName){
<b>if</b>(!proto[fnName]){
proto[fnName] = <b>function</b>(){
<b>return</b> this.invoke(fnName, arguments);
};
}
};
<b>for</b>(var fnName <b>in</b> Ext.Element.prototype){
<b>if</b>(typeof Ext.Element.prototype[fnName] == &quot;<b>function</b>&quot;){
Ext.CompositeElement.createCall(Ext.CompositeElement.prototype, fnName);
}
};
})();
<i>/**
* @class Ext.CompositeElementLite
* @extends Ext.CompositeElement
* Flyweight composite class. Reuses the same Ext.Element <b>for</b> element operations.
* &lt;br&gt;&lt;br&gt;
* &lt;b&gt;NOTE: Although they are not listed, <b>this</b> class supports all of the set/update methods of Ext.Element. All Ext.Element
* actions will be performed on all the elements <b>in</b> this collection.&lt;/b&gt;
*/</i>
Ext.CompositeElementLite = <b>function</b>(els){
Ext.CompositeElementLite.superclass.constructor.call(<b>this</b>, els);
<b>var</b> flyEl = <b>function</b>(){};
flyEl.prototype = Ext.Element.prototype;
<b>this</b>.el = <b>new</b> Ext.Element.Flyweight();
};
Ext.extend(Ext.CompositeElementLite, Ext.CompositeElement, {
addElements : <b>function</b>(els){
<b>if</b>(els){
<b>if</b>(els instanceof Array){
<b>this</b>.elements = <b>this</b>.elements.concat(els);
}<b>else</b>{
<b>var</b> yels = <b>this</b>.elements;
<b>var</b> index = yels.length-1;
<b>for</b>(var i = 0, len = els.length; i &lt; len; i++) {
yels[++index] = els[i];
}
}
}
<b>return</b> this;
},
invoke : <b>function</b>(fn, args){
<b>var</b> els = <b>this</b>.elements;
<b>var</b> el = <b>this</b>.el;
<b>for</b>(var i = 0, len = els.length; i &lt; len; i++) {
el.dom = els[i];
Ext.Element.prototype[fn].apply(el, args);
}
<b>return</b> this;
},
<i>/**
* Returns a flyweight Element of the dom element object at the specified index
* @param {Number} index
* @<b>return</b> {Ext.Element}
*/</i>
item : <b>function</b>(index){
<b>this</b>.el.dom = <b>this</b>.elements[index];
<b>return</b> this.el;
},
<i>// fixes scope <b>with</b> flyweight</i>
addListener : <b>function</b>(eventName, handler, scope, opt){
<b>var</b> els = <b>this</b>.elements;
<b>for</b>(var i = 0, len = els.length; i &lt; len; i++) {
Ext.EventManager.on(els[i], eventName, handler, scope || els[i], opt);
}
<b>return</b> this;
},
<i>/**
* Calls the passed <b>function</b> passing (el, <b>this</b>, index) <b>for</b> each element <b>in</b> this composite. &lt;b&gt;The element
* passed is the flyweight (shared) Ext.Element instance, so <b>if</b> you require a
* a reference to the dom node, use el.dom.&lt;/b&gt;
* @param {Function} fn The <b>function</b> to call
* @param {Object} scope (optional) The &lt;i&gt;<b>this</b>&lt;/i&gt; object (defaults to the element)
* @<b>return</b> {CompositeElement} <b>this</b>
*/</i>
each : <b>function</b>(fn, scope){
<b>var</b> els = <b>this</b>.elements;
<b>var</b> el = <b>this</b>.el;
<b>for</b>(var i = 0, len = els.length; i &lt; len; i++){
el.dom = els[i];
<b>if</b>(fn.call(scope || el, el, <b>this</b>, i) === false){
<b>break</b>;
}
}
<b>return</b> this;
}
});
Ext.CompositeElementLite.prototype.on = Ext.CompositeElementLite.prototype.addListener;
<b>if</b>(Ext.DomQuery){
Ext.Element.selectorFunction = Ext.DomQuery.select;
}
Ext.Element.select = <b>function</b>(selector, unique){
<b>var</b> els;
<b>if</b>(typeof selector == &quot;string&quot;){
els = Ext.Element.selectorFunction(selector);
}<b>else</b> if(selector.length !== undefined){
els = selector;
}<b>else</b>{
throw &quot;Invalid selector&quot;;
}
<b>if</b>(unique === true){
<b>return</b> new Ext.CompositeElement(els);
}<b>else</b>{
<b>return</b> new Ext.CompositeElementLite(els);
}
};
<i>/**
* Selects elements based on the passed CSS selector to enable working on them as 1.
* @param {String/Array} selector The CSS selector or an array of elements
* @param {Boolean} unique (optional) true to create a unique Ext.Element <b>for</b> each element (defaults to a shared flyweight object)
* @<b>return</b> {CompositeElementLite/CompositeElement}
* @member Ext
* @method select
*/</i>
Ext.select = Ext.Element.select;</code></pre><hr><div style="font-size:10px;text-align:center;color:gray;">Ext - Copyright &copy; 2006-2007 Ext JS, LLC<br />All rights reserved.</div>
</body></html>