首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ExtJS 4-获取作为给定元素的后代的所有组件

ExtJS 4-获取作为给定元素的后代的所有组件
EN

Stack Overflow用户
提问于 2011-12-06 22:33:43
回答 1查看 5.2K关注 0票数 2

查找作为给定ExtJS元素的后代呈现的所有HTML组件的最有效方法是什么?请注意,该元素不是组件本身的一部分,也不以任何方式由Ext管理,它只是硬编码的原始HTML。并且该元素不仅可以包含ext组件,它还可以在其中具有其他非ext管理的html,并且该html还可以包含ext组件。因此,这意味着解决方案必须遍历整个DOM,而不仅仅是直接查看子对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-07 01:12:44

我的建议是遍历dom,根据Ext.getCmp检查每个元素的id,这是一个散列映射查找。然后您可以切换到遍历Component方法,但我认为它的速度基本上是相同的,如果您已经开始遍历dom,那么您不妨继续这样做:

代码语言:javascript
运行
复制
var dom = ...;
var components = [];
Ext.Array.each(Ext.get(dom).query('*'), function(dom) {
  var cmp = Ext.getCmp(dom.id);
  if (cmp)
    components.push(cmp);
});

Ext.get(dom).query('*')可能会做比你想做的更多的工作,拥有自己的walker可能会更有效率,就像这样:

代码语言:javascript
运行
复制
function walk(dom, callback) {
  if (dom.nodeType === 1) {
    callback(dom);
    Ext.Array.each(dom.childNodes, function(child) {
      walk(child, callback);
    });
  }
}
var dom = ...;
var components = [];
walk(dom, function(dom) {
  var cmp = Ext.getCmp(dom.id);
  if (cmp)
    components.push(cmp);
});

所有这些都假设dom in与组件in匹配,我不知道这是不是在未来的Ext版本中可以依赖的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8401596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档