如何使用拖放到其上的父ID更新jQuery可拖动项的类?

瑞安·多恩(Ryan Dorn)

我在这里有一个小提琴:https : //jsfiddle.net/radmktryan/qfghjnm6/

我的代码:

的HTML

<table id="#our_table" class="table table-striped">
    <tr>
    <th>Stage 1</th>
    <th>Stage 2</th>
    <th>Stage 3</th>
    </tr>
    <tr>
    <td id="stage1" data-uid="stage1">
        <span class="event" id="a" draggable="true">aaa</span>
        <span class="event" id="b" draggable="true">bbb</span>
    </td>
    <td id="stage2" data-uid="stage2">
        <span class="event" id="c" draggable="true">ccc</span>
        <span class="event" id="d" draggable="true">ddd</span>
    </td>
    <td id="stage3" data-uid="stage3">
        <span class="event" id="e" draggable="true">eee</span>
        <span class="event" id="f" draggable="true">fff</span>
    </td>
    </tr>
</table>

JS

$(document).ready(function(){
    $('.event').on("dragstart", function (event) {
        var dt = event.originalEvent.dataTransfer;
        dt.setData('Text', $(this).attr('id'));
    });
    $('.event').on("drop", function (event) {
        var parentStage = $(this).parent().attr('id');
        $(this).addClass(parentStage);
        console.log(parentStage);

    });
    $('table td').on("dragenter dragover drop", function (event) {  
        event.preventDefault();
        if (event.type === 'drop') {
            var data = event.originalEvent.dataTransfer.getData('Text',$(this).attr('id'));
            de=$('#'+data).detach();
            de.appendTo($(this));   
        };
    });
})

我要完成的工作:当项目“拖放”到另一个表单元格中时,我想更新该项目的类(即“跨度”)。要更改的类应从其父表单元格继承。

我能够提取正确的ID,但是,它的“类”被分配给错误的跨度项目。

我猜想我的代码在“删除”部分时是错误的。

提前致谢!

乔什·克罗齐耶(Josh Crozier)

您正在尝试在元素drop之一上触发事件时将类添加到span元素。这样做实际上是将父元素添加id到要span放置可拖动元素的元素上。

元素drop事件侦听器.event应被删除:

$('.event').on("drop", function (event) {
  // ...
  // I removed this event listener since you never intended
  // to drop span elements inside of other span elements.
});

或者,您可以将drop事件侦听器改为dragend事件侦听器(这可能首先就是您想要的)。

更新的例子

$('.event').on("dragend", function (event) {
    var parentStage = $(this).parent().attr('id');
    $(this).addClass(parentStage);
});

但是,当将类添加到触发事件的元素中时,也可以将其添加到td元素中drop这样,您就不需要使用其他事件监听器dragend

更新的例子

$('table td').on("dragenter dragover drop", function (event) {
    event.preventDefault();

    if (event.type === 'drop') {
        var id = event.originalEvent.dataTransfer.getData('Text', this.id);
        var $draggable = $('#' + id).detach();
        $draggable.appendTo(this);
        $draggable.addClass(this.id);
    };
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

可拖动的子代不会拖放到dragtarget上,而是返回其位置

jQuery UI拖放元素(当可拖动容器发生溢出时)在拖放到可拖放对象时被斩断

jQuery可拖动和可拖放,并在可拖动ul上滚动

使用jQuery UI放到目标区域后克隆可拖动

将新对象拖放到可拖动对象中

使用Jquery UI拖放多个选定的可拖动对象并还原无效的可拖动对象

使可排序元素可拖动,可将其拖放到可放下的对象上,并在向后拖动时可以再次连接到列表

jQuery将拖动的元素拖放到许多div中

当鼠标悬停在可拖动的父项上时,如何使文本选择在子项中可见?

使用 JQuery 将 <span> 拖放到段落

jQuery UI可拖放的可重复项

如何获取将拖放节点拖放到的节点的ID

JQueryUI-如果将可拖放区域缩小,则可拖动元素将被拖放到多个可拖放区域

如何使用可拖动和可拖放将<li>附加到<ul>?

从可排序拖放到可拖放?

拖放时如何使可拖动元素保持在新位置(HTML5不是jQuery)?

如何将可拖动对象拖放到可排序对象中,放置后的项目不是原始元素,而是自定义帮助器

如何使用可拖动和可排序的jQuery?

使用拖放时如何拖动图标

使用子 div 使父 div 可拖动

jQuery UI可拖动项变得不可拖动

如何将 SVG 文件拖放到 Fabricjs 画布上?

如何从WPF Treeview拖放到Winform控件上?

使用坐标将对象拖放到画布上

使用MVVM在Windows Phone上从列表拖放到画布

jQuery可拖动约束到父级的父级

如何将元素拖放到动态生成的DIV中,拖动功能正常工作

使用可拖动的jQuery函数

如何在 javascript 附加字段上使用可拖动?