我有我的元素:
<dom-module id="x-el">
<p class="special-paragraph">first paragraph</p>
<content></content>
</dom-module>
和
<x-el>
<p class="special-paragraph">second paragraph</p>
</x-el>
in my imperative part:
Polymer({
is: 'x-el',
ready: function () {
/* this will select all .special-paragraph in the light DOM
e.g. 'second paragraph' */
Polymer.dom(this).querySelectorAll('.special-paragraph');
/* this will select all .special-paragraph in the local DOM
e.g. 'first paragraph' */
Polymer.dom(this.root).querySelectorAll('.special-paragraph');
/* how can I select all .special-paragraph in both light DOM and
local DOM ? */
}
});
是否有可能使用聚合物内置的?还是应该使用默认的DOM api ?
Polymer没有提供一个辅助函数或抽象来列出轻型和本地dom的节点。
如果您需要此功能,您可以使用this.querySelector(selector)
。
另一方面,除了Polymer.dom(this.root).querySelectorAll(selector)
方法,Polymer还提供了$$
实用函数,它有助于访问元素的本地DOM的成员。该函数的用法如下:
<dom-module id="my-element">
<template>
<p class="special-paragraph">...</p>
<content></content>
</template>
</dom-module>
<script>
Polymer({
is: 'my-element',
ready: {
this.$$('.special-paragraph'); // Will return the <p> in the local DOM
}
});
</script>
注意,与querySelectorAll
不同,$$
函数只返回一个元素:在本地DOM中匹配选择器的第一个元素。
您可以记住的另一个解决方案是:
var elements = this.shadowRoot.querySelectorAll("input")