我尝试使用select(“〜*”)在ExtJS中实现children函数,它只是运行不好。
我只想让ExtJS返回一组直接子节点并忽略子节点下的所有节点。
<div>
<span>
<img/>
<img/>
</span>
<span>
<img/>
<img/>
</span>
<span>
<img/>
<img/>
</span>
</div>
事实上,我只想要直接孩子的数量。如果我选择了右键,我可以在CompositeElement上执行getCount()。
非常感谢任何帮助。
干杯, 米奇
答案 0 :(得分:6)
如果你可以识别父母,那么你可以做这样的事情来得到孩子:
<div id='mydiv'>
<span>
<img/>
<img/>
</span>
<span>
<img/>
<img/>
</span>
<span>
<img/>
<img/>
</span>
</div>
定义一个这样的函数:
function getChildren(parentId) {
var kids = Ext.get(parentId).select('*');
kids = kids.filter(function(el) {
return el.parent().id == parentId
});
return kids;
}
在您的示例中,getChildren('mydiv').getCount()
将返回3.
答案 1 :(得分:1)
我尝试使用select(“〜”在ExtJS中实现children函数 *“),它只是运作不好。
我相信你要找的是“&gt; *”。在ExtJs中你可以做到:
var children = Ext.get("myDiv").query("> *");
与
<div id='mydiv'>
<span>
<img/>
<img/>
</span>
<span>
<img/>
<img/>
</span>
<span>
<img/>
<img/>
</span>
</div>
变量children现在将是一个直接后代HTMLElements数组(在本例中为3个跨度)。
答案 2 :(得分:0)
也许您可以提供所选DOM元素的表示,但是,如果我正确理解您的问题,我认为您想要使用Ext.Element
。
从Ext.CompositeElement
,您可以访问Ext.Element
中的所有方法。使用Ext.Element.select
,Ext.Element.parent
,Ext.Element.query
,Ext.Element.next
等,您应该可以访问所需的任何元素。
请参阅: http://www.extjs.com/deploy/dev/docs/source/Element.fx.html#cls-Ext.Element
SERVUS,
-bn
答案 3 :(得分:0)
如果您只想获得孩子的数量,您可以简单地使用
Ext.select('div span').getCount();
在你的例子中它返回3.