我遇到了Drag& amp;放入jQuery。在我的代码中有一个可拖动的div。当我将其移动到某个可放置的表格单元格时,div的克隆将附加到表格单元格。但是当我拖动克隆时,原来的div会被移动。这是在drop上调用的函数:
function(event, ui)
{
var draggable = ui.draggable.clone(true); // cloning including attrs and children
draggable.draggable(); // this is something I tried with no effect
$(this).empty(); // empty the droppable cell
$(this).append(draggable); // append the div to the cell
}
我无法通过谷歌搜索找到明确的答案。我不知道它是否与此有关,但div具有相对位置(并且需要保持这种状态)。
如何确保克隆可以像原始一样拖动?
答案 0 :(得分:4)
我就是这样做的,这应该可以解决问题。
$(".draggable").draggable({ helper: 'clone' });
$(".droppable").droppable({
drop: function (event, ui) {
ui.draggable.clone().appendTo($(this)).draggable();
}
});
我不知道你是否这样做了,但是不要在draggable上使用id-s,因为那些也将被克隆。此外,您必须在应用可拖动元素之前附加元素。
答案 1 :(得分:1)
您是否尝试将false传递给.clone()? bool代表withDataAndEvents,因此你继承了所有同样附加到旧对象的事件。
编辑:如果出于其他原因需要withDataAndEvents,你可以在进行克隆之前尝试在原始右侧使用draggable(“destroy”),然后再将其拖放?不是最优雅但它有效:http://jsfiddle.net/GheD5/
答案 2 :(得分:1)
将您的draggable
初始化代码更改为包含helper: "clone"
$("selector").draggable({
...
helper: "clone",
...
});
否则,您将拖动刚完成拖动操作的原始项目。
答案 3 :(得分:0)
你看过Helper Option吗?
答案 4 :(得分:0)
你能展示完整的代码吗?我现在只是猜测,但使用'delegate()'http://api.jquery.com/delegate/可能是解决方案的关键。