javascript - 元素在 detach() 和 appendTo() 之后消失

标签 javascript jquery css

我正在使用 hQuery 的 draggable"& "droppable"。当我放下一个元素时,我想将它从它以前的父元素移动到它被删除的父元素。

但是当我分离并附加它时,它就消失了!为什么?

如果我对拖动的元素执行 console.log,我可以看到它已经更改了父元素。

fiddle
https://jsfiddle.net/0apuqnxd/6/

JS

//Make elements Draggable
$('.elementsDiv').draggable({
    revert: 'invalid',
  });

  $('.flakUp, .flakDown').droppable({
    accept: '.elementsDiv',
    drop: function(event, ui) {

  //Get dragged Element (checked)
  draggedElement = $(ui.draggable);

  //Get dropZone where element is dropped (checked)
  dropZone = $(event.target);

  //Remove element from DOM (prev parent)
  $(draggedElement).detach();

  //Append element to DOM (new parent)
  $(draggedElement).appendTo(dropZone);
  },
});

更新的 FIDDLE
https://jsfiddle.net/0apuqnxd/13/

这是为了证明我们没有将放置的元素附加到 dropZone,而只附加到文档...

最佳答案

好像坐标不对

当放下一个元素时,它被放置在比下降坐标更好的上坐标。

$('.flakUp, .flakDown').droppable({
  accept: '.elementsDiv',
  drop: function(event, ui) {
        console.log(event);
    console.log(ui.offset.top);
    var droppable = $(this);
    var draggable = ui.draggable;
       // Move draggable into droppable
    var offset = $(this).offset();
    console.log(offset);
    var relX = event.pageX - offset.left;
    var relY = event.pageY - offset.top;
    draggable.css({"left": ui.offset.left, "top": ui.offset.top, "position": "absolute"}).appendTo(droppable);
  },
});

https://jsfiddle.net/ChaHyukIm/0apuqnxd/12/

关于javascript - 元素在 detach() 和 appendTo() 之后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37292391/

相关文章:

javascript - 作业未重新启动

javascript - IE错误类型错误: Unable to get value of the property 'set' : object is null or undefined

javascript - 弹出窗口不等待响应关闭

Javascript:是否有数据结构, "matrix",thing[x][y]?

javascript - 有没有办法通过 JavaScript 中的 JSDoc 语法声明类型参数,以便 typescript 理解

Jquery js-hotkeys 插件添加按键按入输入字段

javascript - 每 5 秒自动刷新 DIV 内容代码不起作用

html - 如何像在媒体上一样创建全屏背景图像?

html - 使用纯CSS,如何改变<option>元素选中状态的文字颜色

html - Flex 没有将一行中的所有列居中