有没有办法将外部正文元素的事件委托添加到阴影元素中?
例如,我希望每当有人点击anchor
class="special"
时都会触发特殊功能。
通常(在jquery中):
$('body').on('click', 'a.special', myFunction);
然而,这似乎不可能使用影子DOM,至少我尝试过的一切。我是否真的需要将这些处理程序添加到a.special
的每个实例中,因为它们出现在某个模板中?
答案 0 :(得分:1)
在您的示例中,您仍然可以将事件委派与自定义元素一起使用:
$('body').on('click', 'my-element', myFunction);
不同之处在于,事件看起来像是来自my-element而不是元素阴影dom中的a.special
。那是因为event model重新定位以隐藏影子dom的实现细节。
您还可以在元素中设置侦听器,以便在单击a.special
时触发事件:http://www.polymer-project.org/articles/communication.html#utilizing-event-delegation
对于更复杂的内容,请查看Polymer网站上的Communication & Message Passing。特别是,<core-signals>
可以用于类似pubsub的模式。