首页 > 代码库 > ExtJS Element Component DOM 的获取
ExtJS Element Component DOM 的获取
1、获取Element元素:
1)Ext.get == Ext.Element.get 获取元素后放在缓存中下次查找时从缓存中获取,所以需要多次调用这个元素的时候应该使用这个方法。
2)Ext.fly == Ext.Element.fly 获取元素后直接返回,而且该元素不会缓存在系统中。所以只需一次操作时最好调用这个方法。
3)Ext.select 用法与 Ext.query 基本相同,然而二者的差异是返回值。前者返回的是CompositeElementLite对象,该对象保存了选择器所选择的元素,同时以Element形式存储,换句话说,Ext.select 是把 Ext.query 的元素进行了封装。
4)Ext.getDoc() 返回Document 的 Ext.Element 元素 ,类似于 Ext.get(document)
5)Ext.getBody 返回Body 的 Ext.Element 元素 ,类似于 Ext.get(document.body || document.documentElement);
2、获取HTML DOM元素:
1)Ext.query == Ext.DomQuery.select 获取原生DOM元素集合,他并不是Ext封装的Element元素集合,而是HTML的DOM数组
2)Ext.getDom() 返回HTML 原生的 DOM元素
3、获取Component元素:
1)Ext.getCmp == Ext.ComponentMgr.get 返回Component组件
2)component对象可以通过 ownerCt 获取父组件 , 可以通过 items 获取子组件
3)componet.getComponent(index||id) 获取子组件,等价于 component.items.get(index || id);
4)componet.findParentByType() 获取父组件
5)componet.findByType() 获取子孙组件
4、Component、Element、HTMLDOM 之间相互转换
1)componet.getEl() == component.el 组件获取元素
2)element.dom 元素获取HTML DOM
3)Ext.get(dom) HTML DOM 转为 Element
4)Element 或者 HTML DOM 是无法转换 Component 的,因为 Component需要运行渲染时在ComponentMgr中注册。
//----------------------get sourcecode-------------------------------------------
El.get = function(el){
var ex,
elm,
id;
if(!el){ return null; }
if (typeof el == "string") { // element id
if (!(elm = DOC.getElementById(el))) {
return null;
}
if (EC[el] && EC[el].el) {
ex = EC[el].el;
ex.dom = elm;
} else {
ex = El.addToCache(new El(elm));
}
return ex;
} else if (el.tagName) { // dom element
if(!(id = el.id)){
id = Ext.id(el);
}
if (EC[id] && EC[id].el) {
ex = EC[id].el;
ex.dom = el;
} else {
ex = El.addToCache(new El(el));
}
return ex;
} else if (el instanceof El) {
if(el != docEl){
// refresh dom element in case no longer valid,
// catch case where it hasn‘t been appended
// If an el instance is passed, don‘t pass to getElementById without some kind of id
if (Ext.isIE && (el.id == undefined || el.id == ‘‘)) {
el.dom = el.dom;
} else {
el.dom = DOC.getElementById(el.id) || el.dom;
}
}
return el;
} else if(el.isComposite) {
return el;
} else if(Ext.isArray(el)) {
return El.select(el);
} else if(el == DOC) {
// create a bogus element object representing the document object
if(!docEl){
var f = function(){};
f.prototype = El.prototype;
docEl = new f();
docEl.dom = DOC;
}
return docEl;
}
return null;
};
//-------------------------- fly sourcecode --------------------------------
El.fly = function(el, named){
var ret = null;
named = named || ‘_global‘;
if (el = Ext.getDom(el)) {
(El._flyweights[named] = El._flyweights[named] || new El.Flyweight()).dom = el;
ret = El._flyweights[named];
}
return ret;
};
ExtJS Element Component DOM 的获取