ExtJS相当于JQuery的孩子?

时间:2010-01-26 16:14:11

标签: jquery extjs

我尝试使用select(“〜*”)在ExtJS中实现children函数,它只是运行不好。

我只想让ExtJS返回一组直接子节点并忽略子节点下的所有节点。

<div>
    <span>
        <img/>
        <img/>
    </span>
    <span>
        <img/>
        <img/>
    </span>
    <span>
        <img/>
        <img/>
    </span>
</div>

事实上,我只想要直接孩子的数量。如果我选择了右键,我可以在CompositeElement上执行getCount()。

非常感谢任何帮助。

干杯, 米奇

4 个答案:

答案 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.selectExt.Element.parentExt.Element.queryExt.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.