问题
我正在使用SortableJS构建一个可拖动的树组件。这意味着我的每个sortable-item
s 都有一个toggle-arrow
作为打开和关闭 a 的子元素sub-tree
(如果有的话)。
如果单击,我正在尝试使用stopPropagation()
来阻止选择父级,但它不起作用。sortable-item
toggle-arrow
您在打开状态下看到的蓝色突出显示(第二张图片)是我在使用插件selectedClass
时为选项选择的样式。multiDrag
这说明当我单击toggle-arrow
它会导致父级sortable-item
被选中。
我不希望这种情况发生。
编码
我的 SortableJS 树组件中的项目代码如下所示(使用 Vue.js 和 Pug 语法):
div.sortable-item
div.content
div.toggle-arrow(@click.stop="toggleTree($event)")
div.icon
div.title
div.sub-tree
然后我有一个处理我的元素@click
绑定的处理程序:toggle-arrow
toggleTree = function($event) {
$event.stopPropagation()
/// Code for handling the sub-tree toggling goes here.
/// The sub-tree toggling itself works just fine.
}
您可以看到我声明@click.stop
为事件绑定,这应该阻止click
事件从toggle-arrow
子元素冒泡,但它不起作用。
我什至试图$event.stopPropagation
在处理程序中使用。但是,事件似乎继续冒泡,因此父sortable-item
元素最终处于选定状态。
我也尝试过声明@click.native.stop
为事件绑定,但它只是阻止我的toggleTree
方法触发。我假设在某处有另一个事件处理程序SortableJS
干扰@click.native.stop
绑定。
问题
单击my 的子元素时,如何停止事件的传播
sortable-item
?multiDrag
插件如何处理选择?我仔细研究了代码,发现该事件是在 的事件select
处理程序中触发drop
的sortable-item
,但我对此感到困惑。为什么要drop
使用事件处理程序来切换 a 的选择sortable-item
?
在此先感谢您提供的任何信息。