javascript - 嵌套影子根中的查询元素

标签 javascript polymer shadow-dom

场景: 在我的应用程序中,我嵌套了shadow-roots,并且我想从外部shadow-root获取内部shadow-root中的元素。

我实际上的意思是考虑这个场景。

<Component 1 id="headerComponent">
#shadow-root // outer shadow-root.
  <div class="header"></div> // element in outer shadow-root.
  #shadow-root // inner shadow-root.
    <Component 2 id="titleComponent"> // We have component 2 inside the shadow root of component 1.
       <input class="titleInput"> // element inside inner shadow-root.

现在,如果我在 Component 1.js并想要查询 Component 1.js 中的任何元素,我会写这段代码this.shadowRoot.querySelector('.header'); ,而且效果很好。

但是,如果我在 Component 1.js并想要查询 <input> 中的一个元素(这里是 Component 2.js ,带有类 titleInput) ,我该怎么办?

尝试类似的语句 this.shadowRoot.querySelector('.titleInput');似乎不起作用并返回 null .

最佳答案

我设法解决了这个问题。 这是发挥神奇作用的 js 片段。

this.$.titleComponent.shadowRoot.querySelector('.input-wrap');

适合那些不熟悉 polymer 架构的人。

这里,就像我在组件 1 中一样。 因此,this 引用组件 1(组件 1 类方法、属性和 this.$ 用于选择组件 1 类模板中 id 后跟 this.$.elementID 的元素), this.$.titleComponent 选择 titleComponent,此语句选择元素 shadowRoot.querySelector('.input-wrap')

关于javascript - 嵌套影子根中的查询元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58299663/

相关文章:

asynchronous - polymer this.async vs Promise.then vs setTimeout

css - 外部样式不会覆盖 Shadow DOM 样式

javascript - 如何在 Jquery 中找到一条线的中点?

javascript - 如何使用javascript将正斜杠替换为反斜杠和正斜杠

javascript - 如何让 slider 在 JavaScript 中滑动时显示信息?

polymer - 手动重新计算 'computed properties'

javascript - 组件中的Vuejs3 react 数组

css - 如何在 Polymer Project 1.0 中实现容器或网格之类的东西 - 如何实现?

polymer - 是否可以使用 Polymer 查询包括 shadow dom 在内的所有元素?

html - 将影子 DOM 附加到自定义元素可以消除错误,但为什么呢?