javascript - jQuery 可在动态创建的元素上拖动/排序

标签 javascript jquery jquery-ui

经过一些血汗和幸运的是没有眼泪,我成功地创建了一个符合我需要的拖放系统。

只有两件事让我泪流满面……

这是 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 天,默认情况下,占位符会随着天数动态增加。如果占位符的最大限制已满,将附加另一个。现在,在附加非默认占位符并删除之前填充的占位符后,我不能让它再次可放置。

不好解释,但是看上面的demo ^

Extra:我希望能够在这些占位符之间拖动项目。但是也找不到办法。

感谢您的帮助!

最佳答案

您似乎没有在删除时重新激活 droppable。而且,在 dropdestroy 它们可能会让您需要重新创建它们。您可以在删除时使用 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");
    }

http://jsfiddle.net/opmd46t2/3/

关于javascript - jQuery 可在动态创建的元素上拖动/排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30938184/

相关文章:

javascript - 按每个数组中的一个值对一组关联数组进行排序

javascript - 旧代码 : window. Parent.location.href ="https:/home"

javascript - 范围的差异

javascript - Array.function 和 Array.prototype.function 有什么区别?

jquery - 启用缓存的微调消息

jQuery 可排序逻辑

javascript - jQuery:div 和 tbody 之间的查找行为不一致

jquery - 如何使 JSSOR Slider 具有可点击的图像而不破坏幻灯片功能?

javascript - 单击包含标签的链接时,不要将标签添加到 URL

jquery ui 自动完成组合框与类别