需要有关 jquery 可拖动 z-index 问题的帮助

Need assistance wiht jquery draggable z-index issue

下面的代码运行良好,因此当拖动一个块时,它位于其他块之上。但是,我不确定要添加什么,以便当用户放下盒子时,z-index 会更新并且盒子保持在顶部。现在,当盒子被放下时,它会在其他盒子下面,并保留其原始的 z-index。我确实看到了这个(// Setter $( ".selector" ).draggable( "option", "zIndex", 100 );) 在 API 文档中,只是不确定如何将它集成到我下面的工作代码中。感谢您的任何想法!

$(function(){
    var positions = JSON.parse(localStorage.positions || "{}");
    $(function () {
        var d = $("[id=draggable]").attr("id", function (i) {
            return "draggable_" + i
        })
        $.each(positions, function (id, pos) {
            $("#" + id).css(pos);
        })

        d.draggable({
            containment: "#containment-wrapper",
            zIndex: 100,
            scroll: false,
            stop: function (event, ui) {
                positions[this.id] = ui.position
                localStorage.positions = JSON.stringify(positions)
            }
        });
    });
});

我看到至少两个选项:

  • 跟踪最大集合索引,每当移动元素时,将其索引设置为最大值 + 1,因此在删除时它将始终位于顶部。

    var maxZIndex = 1; // or something else
    d.draggable({
        // ...
        start: function (event, ui) {
            maxZIndex++;
            ui.helper.zIndex(maxZIndex);
            $(event.target).zIndex(maxZIndex);
        }
        //...
    });
    
  • 如果您不只是将元素拖到某处,而是将其放置在另一个元素上,则可以使用 droppable 获取放置事件并将 z-index 设置为z-index 可放置元素 + 1.

    yourDroppables.droppable({
        // ...
        drop: function(event, ui) {
            var zIndex = $(event.target).zIndex()
            ui.draggable.zIndex(zIndex + 1);
        }
        // ...
    });