当前位置: 首页 > 知识库问答 >
问题:

vue3 - 在使用 vue-draggable-next的时候,如何获取到拖动过程中,拖到了哪个元素上?

佴涵蓄
2024-03-18

在使用 vue-draggable-next的时候,如何获取到拖动过程中,拖到了哪个元素上?

问题是这样的,我有两个组件,通过一个父组件进行挂载,左侧的drag组件可以拖入到右侧组件,右侧组件有两个draggable的div。我想分别拖入到不同的div中,现在的问题是无法知道我到底拖到了哪个div元素上,导致数据添加不正确,如何解决这个问题?尝试过 add、move事件,但是move事件获取到的是当前元素的div,拿不到右侧组件的div。

共有1个答案

陆翰学
2024-03-18

vue-draggable-next 中,你可以使用 end 事件来捕获拖动结束时目标元素的信息。end 事件会提供一个对象,其中包含了关于拖动操作的各种信息,如源元素、目标元素等。

要获取拖动过程中目标元素的信息,你可以使用 end 事件的 related 属性。这个属性会提供关于目标元素的信息,包括其索引和 DOM 元素。

以下是一个示例代码,演示了如何在 vue-draggable-next 中使用 end 事件来获取目标元素的信息:

<template>  <div>    <div>      <Draggable v-model="list1" @end="onDragEnd">        <div v-for="(item, index) in list1" :key="item.id">          {{ item.name }}        </div>      </Draggable>    </div>    <div>      <Draggable v-model="list2" group="people">        <div v-for="(item, index) in list2" :key="item.id" class="target-div">          {{ item.name }}        </div>      </Draggable>    </div>  </div></template><script>import { Draggable } from 'vue-draggable-next';export default {  components: {    Draggable,  },  data() {    return {      list1: [        { id: 1, name: 'Item 1' },        { id: 2, name: 'Item 2' },        // ...      ],      list2: [        { id: 3, name: 'Target 1' },        { id: 4, name: 'Target 2' },        // ...      ],    };  },  methods: {    onDragEnd(event) {      const { related } = event;      if (related) {        console.log('Target element:', related.element); // 目标元素的 DOM 节点        console.log('Target element index:', related.index); // 目标元素在列表中的索引      }    },  },};</script><style>.target-div {  border: 1px solid #ccc;  margin-bottom: 10px;  padding: 10px;}</style>

在上面的示例中,我们有两个 Draggable 组件,一个用于拖动元素(list1),另一个用于放置目标元素(list2)。当拖动结束时,onDragEnd 方法会被调用,并接收到一个包含有关拖动操作信息的事件对象。通过访问 related 属性,我们可以获取到目标元素的信息,包括其 DOM 节点和在列表中的索引。这样,你就可以根据这些信息来决定如何将数据添加到正确的目标元素中。

 类似资料:
  • 编辑2:在仔细阅读了jquery-ui的源代码,并充分理解了其原理后,我制作出了能够符合我的需求的代码:能够在旋转后的父元素中使用jquery-ui的draggable功能以实现拖动子元素的效果。我希望能分享给大家,或许有其他人有着和我类似的需求,可以提供给您作为参考。 需要写在最前面强调的是,这个功能有一定的局限性,例如旋转的父元素和拖拽的子元素必须都是position:absolute,并且一

  • 这种点击拖拽的时候,当前框有个虚线蓝块是怎么实现的?如果移入到右边的框,则右边的框显示虚线蓝块,总之,移入在哪个div中的时候都会显示一个虚线蓝块。 目前使用了vue3和vue-draggable-next,使用了 start事件和move,并未实现

  • jQueryUI提供了draggable()方法,可以使任何DOM元素可拖动。 一旦元素可拖动,您可以通过用鼠标单击它并将其拖动到视口内的任何位置来移动该元素。 语法 (Syntax) draggable()方法可以使用两种形式 - $(selector,context).draggable(options)方法 $(selector,context).draggable(“action”,[pa

  • 你好,堆栈溢出,目前正在处理一个需要拖动元素的任务;不是本机API所做的图像拖动,而是拖动实际的元素。元素应该显示一个要删除的位置框,并在将其拖过一个区域时更改其自身的内部内容,该区域将在删除时删除该元素。到目前为止,我发现了这个有用的指令,帮助我做到这一点https://xieziyu.github.io/angular2-draggable/#/usage/basic 问题是,一旦元素通过某个

  • 我正在使用本机拖放html5 api开发拖放界面。我们已经在其他部分使用了jQuery拖动,但是它在这个特定部分的表现很差,所以我们使用原始的JavaScript。 本质上,标记看起来像这样... 我为“dragstart”创建一个addEventListener并运行以下函数 它将我的类完美地应用于原始元素,但我似乎不能移动原始元素。浏览器创建克隆/幽灵图像...我看到你可以创建自己的图像显示,

  • 我有以下HTML结构,并将dragenter和dragleave事件附加到