【问题标题】:jQuery Drag and Drop - Dropped element can not drop againjQuery拖放 - 被丢弃的元素不能再次被丢弃
【发布时间】:2015-05-23 10:59:21
【问题描述】:

我使用 jQuery 创建了拖放功能。掉线后我面临一个问题。

问题:当我从可放置容器中删除放置的元素(拖动 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>

【问题讨论】:

  • 你用哪个插件来拖拽?

标签: jquery html css drag-and-drop


【解决方案1】:

Fiddle Demo 将 drop 函数更改为此并检查

function drop() {
    $('.drop-container').droppable({
        hoverClass: 'active',
        drop: function (e, ui) {
            $(this).append(ui.draggable);
//            $(this).droppable('destroy');
        }
        $('.cs-drop').draggable({
            revert: true
        });
    });
}

【讨论】:

  • 如何让droppable容器可以拖动到另一个容器
【解决方案2】:

因为您要附加一个已删除元素的克隆,因此未初始化可拖动元素

$(".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)到可放置容器时,拖动 1 不应从可拖动容器中移除。它应该(拖动 1)复制到可放置容器
  • 如何使可放置的容器可以拖动到另一个容器中
猜你喜欢
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
相关资源
最近更新 更多