我创造了Drag&使用jQuery删除功能。掉线后我面临一个问题。
问题:当我从droppable容器中删除掉落的元素(拖动1)时。它将回到可拖动的容器中。同样的元素(拖动1)我无法下降到可投放的容器。
我该如何解决这个问题?请帮帮我。
我的代码
HTML:
<div class="drag-item">
<div class="cs-drop">drag 1 <a href="#"> remove</a>
</div>
<div class="cs-drop">drag 2 <a href="#"> remove</a></div>
<div class="cs-drop">drag 3 <a href="#"> remove</a></div>
</div>
<div style="clear: both;"></div>
<div class="drop-container">drop here</div>
<div class="drop-container">drop here</div>
<div class="drop-container">drop here</div>
JS:
<script>
$('.cs-drop').draggable({
revert: true
});
drop();
function drop() {
$('.drop-container').droppable({
hoverClass: 'active',
drop: function (e, ui) {
$(this).append(ui.draggable);
// $(this).droppable('destroy');
}
});
}
$(".drop-container").on("click", ".cs-drop a", function () {
$(this).closest('.cs-drop').fadeOut(200, function () {
$('.drag-item').prepend($(this).clone().css('display','block'));
$(this).remove();
});
});
</script>
CSS:
<style type ="text/css">
.cs-drop {
padding: 40px 25px;
border: 1px solid red;
float: left;
}
.drop-container {
width: 100px;
height: 100px;
border: 1px solid black;
float: left;
}
.drop-container.active {
background-color: red;
}
</style>
答案 0 :(得分:0)
因为您正在追加已删除元素的克隆,因此没有初始化可拖动的
$(".drop-container").on("click", ".cs-drop a", function () {
$(this).closest('.cs-drop').fadeOut(200, function () {
$('.drag-item').prepend($(this).css('display', 'block'));
});
});
演示:Fiddle
另一种选择是重新初始化克隆的elemnet上的小部件
draggable('.cs-drop');
drop();
function draggable(els) {
$(els).draggable({
revert: true
});
}
function drop() {
$('.drop-container').droppable({
hoverClass: 'active',
drop: function (e, ui) {
$(this).append(ui.draggable);
//$(this).droppable('destroy');
}
});
}
$(".drop-container").on("click", ".cs-drop a", function () {
$(this).closest('.cs-drop').fadeOut(200, function () {
var $el = $(this).clone().show().prependTo('.drag-item');
draggable($el)
});
});
演示:Fiddle
答案 1 :(得分:0)
Fiddle Demo 将跌落功能更改为此并检查
function drop() {
$('.drop-container').droppable({
hoverClass: 'active',
drop: function (e, ui) {
$(this).append(ui.draggable);
// $(this).droppable('destroy');
}
$('.cs-drop').draggable({
revert: true
});
});
}