问题
我正在使用SortableJS构建一个可拖动的树组件。这意味着我的每个sortable-items 都有一个toggle-arrow作为打开和关闭 a 的子元素sub-tree(如果有的话)。
如果单击,我正在尝试使用stopPropagation()来阻止选择父级,但它不起作用。sortable-itemtoggle-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?
在此先感谢您提供的任何信息。



