如果知道 DOM 元素的 ID,如何获取组件?

Posted

技术标签:

【中文标题】如果知道 DOM 元素的 ID,如何获取组件?【英文标题】:How can I obtain the component if I know the ID of the DOM element? 【发布时间】:2012-04-27 01:20:56 【问题描述】:

我只是继承了一个有很多页面的 ExtJS 应用程序。此应用程序允许用户从 MS Word 粘贴。在 MS Word 2003 中,单引号和双引号不是正常的 ASCII 字符。当数据存储在数据库中时,它们被转换为方框或倒置问号,因为我们的数据库列不处理 Unicode,我们不想将列转换为处理 Unicode(数据应该只是 ASCII,除了这些报价)。我在网上找到了一个 javascript 函数,可以从给定的字符串中删除这些引号。

我已经通过添加来测试这个功能:

enableKeyEvents: true,
listeners: 
    keyup: function(c,e)  ... 

这适用于一个元素/组件。但是我有大约 100 个组件,而使用这个应用程序,要找到这些组件并不容易。所以我决定做的是使用 jQuery 监听 body 元素上的 keyup 事件:

jQuery('body').keyup(function(e) 
    var keyCode = e.which;
    if ((keyCode == 86) && (e.ctrlKey)) 
        var domEl = e.target;
        var domId = domEl.getAttribute('id');
    

此应用程序也使用网格组件和其他非网格组件。为了可靠地获取和设置值,我想获取组件并使用它的 getValue() 和 setValue() 方法。那么,知道了DOM元素的ID,有没有办法获取组件呢?

【问题讨论】:

有没有人知道如何从元素的 ID 中获取组件,或者对如何解决我的问题有任何建议? 【参考方案1】:

如果你有 domId 试试

var objComp = Ext.getCmp(domId); 

如果你正在使用任何布局尝试

var objComp = Ext.getCmp('center-region').getComponent(domId)

【讨论】:

以上是关于如果知道 DOM 元素的 ID,如何获取组件?的主要内容,如果未能解决你的问题,请参考以下文章

如果我通过 Selenium Webdriver 和 Java 知道相应的文本,如何提取 DOM 元素的 ID 属性

DOM 元素到对应的 vue.js 组件

如何从 DOM 元素中获取 Ext JS 组件

js获取已知id的DOM元素

如何通过类、id、选择器和属性获取 DOM 元素

如何使用 Angular 4 从 Parent 获取子 DOM 元素引用