【发布时间】:2015-02-22 23:59:53
【问题描述】:
我正在尝试使用 interact.js 库来创建一个可拖动的 Polymer 事件。我知道存在一个核心拖放元素,我想使用interact.js。我试图通过将一个类传递给交互对象来使第一个示例工作。
interact('.draggable').draggable({....
这在 Polymer 中不起作用,因为它必须访问元素 shadowDOM。我尝试了以下选择器:
"custom-elem::shadow .draggable"
":host-context(.draggable)"
":host(.draggable)"
"custom-elem /deep/ .draggable"
"drop::shadow .draggable"
"custom-elem::shadow .draggable"
全部返回null。
我还尝试分配和传递对具有 .draggable 类的单个对象的引用:
var x = this.shadowRoot.querySelector(".draggable");
interact(x).draggable({....
这也不起作用。 有什么建议吗?
编辑:
<polymer-element name="custom-elem">
<template>
<div class="draggable"></div>
</template>
</polymer-element>
【问题讨论】:
-
影子树长什么样子?如果
.draggable元素是阴影元素,则:host(.draggable)和:host-context(.draggable)不正确。 -
是的。 .draggable 元素位于自定义元素模板下。对不起,我会添加树
-
使用最新版本的 interact.js 选择器不会到达 shadow DOM 中的元素,直接使用元素会导致抛出错误。我是 interact.js 的作者,我正在做一些修复以更好地处理影子 DOM。
-
明白了,感谢您抽出宝贵时间回复!我会继续检查更新。
标签: javascript css-selectors polymer shadow-dom interact.js