首页 > 解决方案 > 从拖动的元素中获取父数据元素 - 拖放功能

问题描述

我正在尝试data-date在 JavaScript 中检索拖动对象的父数据属性。所以我想<td>div“拖动我”的位置接收数据日期属性。

HTML 示例:

<td data-date="2/3/2020">
<div>drag me</div>
</td>

<td data-date="3/3/2020">
<-- DIV "Drag Me" will be dragged to this location --!>
</td>

我能够检索删除的数据日期属性,但无法弄清楚如何检索从数据日期属性中拖动的内容。

JS From 和 TO 当前代码

       dropped = ui.draggable,
       newDate = $(this).data('date'),
       console.log('Date From :' + dropped.data('date')); // needs to be found
       console.log('Date To:' + newDate); // Works correctly

标签: javascriptdrag-and-dropelementcustom-data-attribute

解决方案


我找到了一种解决方法,可以将信息从可拖动函数传递到可放置函数

在下面的示例中,我首先从可拖动函数中的父元素获取数据日期值。检索到这些数据后,我们将值从可拖动的函数传递给可放置的函数。

我们将变量命名为oldDate,以便我们可以通过调用“ui.draggable.data('oldDate')”在可放置函数中访问它。我会在下面为你们提供一个示例代码。

可拖动功能:

$(".drag").draggable({
    cursor: "crosshair",
    revert: "invalid",
    start: function(event, ui) {
        var oldDate = $(this).parent().data('date'); // get value from parent data-date attribute
        $(this).data('oldDate', oldDate); // pass variable to droppable function
    }
});

可丢弃功能:

 $("td[data-date]").droppable({
    accept: ".drag", 
    activeClass: "over",
    drop: function(event, ui) {
        var displayOldDate = ui.draggable.data('oldDate'); // access the variable saved in draggable function 
        console.log('Dragged from: ' + displayOldDate);
    }
 });

推荐阅读