【问题标题】:ExtJs - Get element by div class?ExtJs - 通过 div 类获取元素?
【发布时间】:2012-11-02 23:14:23
【问题描述】:

如何通过类名获取Div的ExtJs组件对象

假设我的 div 是:

<div class="abc"></div>

如何让这个 Div 的 ExtJs 对象执行例如getWidth()

注意:没有给出id

我尝试了什么:

Ext.select(".abc")
Ext.query(".abc")

编辑:

错误: Object has no method 'getWidth'

<div id="main">
<div class="abc"></div>
</div>
  var d = Ext.get( "main" );
  d.query('.abc').getWidth();

【问题讨论】:

    标签: extjs extjs4.1


    【解决方案1】:
    Ext.select('abc');
    

    此方法也适用于 EXT 4。

    在您的示例中,只需在调用类名字符串时删除点即可。

    【讨论】:

      【解决方案2】:

      对于 Ext4 及更高版本,您可以使用以下内容:

      Ext.ComponentQuery.query('panel[cls=myCls]');
      

      你会得到这个组件的数组

      来源:http://docs.sencha.com/ext-js/4-1/#!/api/Ext.ComponentQuery

      【讨论】:

        【解决方案3】:

        使用

        var dom = Ext.dom.Query.select('.abc');
        var el = Ext.get(dom[0]); 
        

        这将返回一个Ext.Element。然后你可以像这样在 el 上使用 ext 方法

        el.on('click', function(){}, scope);
        

        el.getWidth()
        

        【讨论】:

        • 不起作用。请注意,它是 class 而不是 id。返回空值。
        • 据我所知 Ext.get() 需要一个 id
        • 之前试过,说:Cannot read property 'Query' of undefined
        • 使用Ext.dom.Query。另外,我们不需要创建一个新的Ext.Element,我们可以直接将dom对象传递给Ext.get,得到一个Ext.Element。答案已编辑以反映相同。
        【解决方案4】:

        我相信你的意思是Ext.dom.Element(不是 ExtJs 组件对象)。如果是,请尝试此代码

        var d = Ext.get( "main" );
        alert(d.down('.abc').getWidth());​
        

        demo

        【讨论】:

        • 太棒了+1!我没有意识到 Ext.Element 也有上升/下降!
        • 是的。检查我的答案。无论哪种方式,如果您要为一个元素分配一个 id,您可以直接对您首先尝试检索的元素执行此操作。
        • 确实,我刚刚检查了您的编辑!完美运行!编辑:我不能编辑 div 并添加一个 id,所以我需要按类去。
        猜你喜欢
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 2020-10-03
        • 2011-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多