经过一些血,汗,幸运地没有眼泪,我设法创造了一个符合我需要的拖放系统。
只有两件事几乎触发了我的眼泪...
这是jsfiddle
问题在于这些代码行,但无法找到它:
if (dropped === original) {
$("#dropzone").append('<li class="placeholder" data-id="" data-order="" data-content=""></li>');
init();
}
$(".remove").click(function() {
var removable = $(this).parent();
if (dropped > original) {
removable.remove();
removable.removeClass("dropped");
removable.removeClass("ui-droppable-disabled");
} else {
removable.empty();
removable.removeClass("dropped");
removable.removeClass("ui-droppable-disabled");
}
init();
});
现在解释和我的目标:
有5天,默认情况下,占位符会随着天数的增加而动态增加。如果填充了占位符的最大限制,则将追加另一个。现在,在附加了非默认占位符并删除之前填充的占位符之后,我不能再允许它再次放置。
难以解释,但请参阅上面的演示^
额外:我希望能够在这些占位符之间拖动项目。但也找不到办法。
感谢您的帮助!
答案 0 :(得分:2)
您似乎无法在删除时重新激活droppable
。此外,destroy
上的drop
可能会让您需要重新创建它们。您可以在删除时使用disable
,在删除时使用enable
。像这样:
drop: function (event, ui) {
var dragging = ui.draggable.clone().find("img").remove();
$(this).append(dragging).addClass("dropped");
$(this).droppable('disable');
后来:
if (dropped > original) {
$(this).parent().droppable('enable')
removable.remove();
removable.removeClass("dropped");
removable.removeClass("ui-droppable-disabled");
} else {
$(this).parent().droppable('enable');
removable.empty();
removable.removeClass("dropped");
removable.removeClass("ui-droppable-disabled");
}