Cod*_*der 3 javascript jquery drag-and-drop jquery-ui draggable
我项目中剩下的一件事是使两个div同时可拖动和可放置。现在我有了可以拖放的div的工作代码,但是例如,我可以将div从目标区域拖放到用户区域,但是我似乎无法找到一种方法将这些div从用户拖放并分配给其他用户用户。
$(document).ready(function(){
$(".dragable").draggable({
cancel: "a.ui-icon",
revert: true,
helper: "clone",
cursor: "move",
revertDuration: 0
});
$('.droppable').droppable({
accept: ".dragable",
activeClass: "ui-state-highlight",
drop: function( event, ui ) {
// clone item to retain in original "list"
var $item = ui.draggable.clone();
$(this).addClass('has-drop').append($item);
}
});
});
Run Code Online (Sandbox Code Playgroud)
问题是因为一旦拖放项目,便将其克隆。此克隆没有draggable()实例化插件。你需要调用draggable()的$item一次。尝试这个:
var draggableOptions = {
cancel: "a.ui-icon",
revert: true,
helper: "clone",
cursor: "move",
revertDuration: 0
}
$(".dragable").draggable(draggableOptions);
$('.droppable').droppable({
accept: ".dragable",
activeClass: "ui-state-highlight",
drop: function(event, ui) {
var $item = ui.draggable.clone();
$item.draggable(draggableOptions);
$(this).addClass('has-drop').append($item);
}
});
Run Code Online (Sandbox Code Playgroud)
仅当其从目标位置克隆时才应将其克隆,否则应将其移动。
为此,您需要删除helper: 'clone'克隆的可拖动元素中的选项,并在元素上保留一个标志,以确定它是全新的克隆还是之前被拖动并再次移动过。为此,您可以使用一个类,如下所示:
$(".dragable").draggable({
cancel: "a.ui-icon",
revert: true,
helper: "clone",
cursor: "move",
revertDuration: 0
});
$('.droppable').droppable({
accept: ".dragable",
activeClass: "ui-state-highlight",
drop: function(event, ui) {
var $item = $(ui.draggable)
if (!$item.hasClass('clone')) {
$item = $item.clone().addClass('clone');
$item.draggable({
cancel: "a.ui-icon",
revert: true,
cursor: "move",
revertDuration: 0
});
}
$(this).addClass('has-drop').append($item);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2972 次 |
| 最近记录: |