我一直在尝试使用此代码:jsfiddle它会突出显示并告诉您可以将哪些框放到框中,但它不接受任何可放置的框。有谁知道我怎么能改变这个代码来接受一个droppable而不是它只是还原回来?
$(".DragItem").draggable({
revert: true,
helper: "clone"
});
$(".DropItem").droppable({
tolerance: "touch",
over: function (event, ui) {
var dropItem = $(this);
var dragItem = $(ui.draggable);
var valid = String(dropItem.data("id")).indexOf(dragItem.data("id")) > -1;
if (valid) {
dropItem.addClass("DropTargetValid");
} else {
dropItem.addClass("DropTargetInvalid");
}
},
out: function (event, ui) {
var dropItem = $(this);
dropItem.removeClass("DropTargetValid");
dropItem.removeClass("DropTargetInvalid");
},
deactivate: function (event, ui) {
var dropItem = $(this);
dropItem.removeClass("DropTargetValid");
dropItem.removeClass("DropTargetInvalid");
}
});
答案 0 :(得分:1)
您需要将clones()附加到正确的div并在它们不匹配时将其还原,首先accept:
所有可拖动元素,然后在drop:
部分处理还原。
您还需要创建并保存您克隆和拖动的元素的原点位置,这样您就可以将其恢复到原始位置,然后将其从页面中删除。
以下是finall脚本演示:
JSnippet demo draggable & droppable
玩得开心!
答案 1 :(得分:0)
我会从这样的事情开始:
<强>示例强>:
$(".drop1").droppable({
accept: '.drag1',
activeClass: 'DropTargetValid',
drop: function (ev, ui) {
$(ev.target).append(ui.draggable.clone());
}
});
---编辑---