Click to Front 和 DIV 堆叠问题

Trouble with Click to Front and DIV stacking

我正在尝试设置一个类似于 windows 的页面。有一些可拖动和调整大小的分层 DIV。我想做到这一点,所以当 window 被点击时它会把它带到最前面。

如果我使用可拖动的堆叠功能,它基本上可以按预期工作,但前提是您单击并拖动 window。如果我只单击而不拖动我希望它仍然像拖动一样出现在前面。

 $('.window').click(function(){
            $('.ui-front').removeClass('ui-front');
            $(this).addClass('ui-front');
        });

这是我试过的一个 jsfiddle,其中包含一部分: http://jsfiddle.net/wLe261mh

但它并不能使图层从一次点击到另一次点击保持正确。例如,尝试在黄色上涂上红色,但不要涂上灰色。 这是与可拖动堆栈功能相同的基本功能,该功能效果更好,但仅在拖动时有效。 (它似乎也打破了点击前面的选项) $( ".ui-draggable" ).draggable({ cancel: '.text',stack: ".ui-draggable" }) http://jsfiddle.net/wLe261mh/1

有更好的方法吗?如果我能让它像可拖动堆栈函数那样工作并且不必跟踪每个元素的 z nubmers 和 add/subtract 数字,那就太棒了。如果我有 7-8 windows 可以跟踪,可能会很快失控。

尝试使用 mousedown 而不是单击。单击仅在 mousedown 然后 mouseup 之后注册,因此如果您按住鼠标并拖动它不会触发点击。

我找到了一个迂回的方式来实现你正在寻找的东西。

如果您将 this script 合并到您网站的某处,您可以将 $('.window').click(function(){}) 更改为;

$('.window').click(function(){
    $(this).simulate('drag');
});

您可以在此处查看工作演示:https://jsfiddle.net/rf7cowe3/

基本上,似乎 class .ui-front 正在破坏可拖动的整个 stack 功能 - 所以我必须找到一种方法来触发 'drag' 事件单击以欺骗函数以适当地对 z-indexes 进行排序。

我发现这个内置于可拖动的“距离:0”的一部分将允许它使用堆栈,即使它没有被拖动。

 $( ".ui-draggable" ).draggable({ cancel: '.text',stack: ".ui-draggable", distance: 0 })

如果使用取消部分允许突出显示文本,仍然不理想,因为那样你就无法在文本部分中单击。但我想 post 这个答案,以防对其他人有帮助。上面的模拟答案似乎适用于文本区域