jQuery 在不重置 iframe 的情况下将 DIV 置于最前面

jQuery bring DIV infront without reseting iframe

我这里的代码来自我的 "operating system" 我试图通过将 iframe 放在 AppWindows 中以 PHP 代码作为后端或(主程序进程)在浏览器中创建。

现在在每个 GUI 系统中你都可以移动 windows,将一个堆叠在彼此之上等等,但我无法在 [=46] 中高效地完成=] 使用 jQuery & jQuery-UI.

我正在使用 draggable() 和我在 Whosebug 上发现的一些技巧,能够带来 div AppWindow 在上面。


问题

将 **AppWindow** 置于顶部的代码工作正常,但问题是 window 中的 iframe 被重置,因为这段代码正在做的是它将当前 div 堆叠为第一个div 高于父容器内的所有其他容器。

如果您注意到 AppWindow 1 iframe 在您单击 window 时闪烁,我不希望这样。


代码 (jQuery)

$(function() {
    // Don't know what I'm doing with iframe here...
    $('.AppWindow iframe').click(function(){
        $(this).parent().child.parent().append(this);
    });
    $('.AppWindow').click(function(){
        $(this).parent().append($(this));
    });
    $('.AppWindow').draggable({handle:".DragHandle"});
});

结论

如果有办法防止这种情况发生,请随时在下面写下答案。

如果你有更好的方法比如"JavaScript OS UI Framework"之类的你就更自由地写在下面

我想要一些东西像 **os.js** 或 **windows93.net** 类型的东西。我所需要的只是一个工作任务栏,工作 window 和一种在 window 中轻松嵌入 PHP 页面的方法,它将模仿应用程序的工作。

我认为这不可能。看看here.

但是

为什么要重新排序 windows,首先要改变它们在 dom 中的位置?您可以简单地使用 z-index。一个基本示例,您只需设置目标框架的活动 class。

$(function() {
    $('.AppWindow').draggable({
        handle:".DragHandle",
        drag: function(event, ui){
            updateActiveWindow(event.target);
        }
    });

    $('.AppWindow').on('click', function(){
        updateActiveWindow(this);
    });

    function updateActiveWindow(el) {
        $('.AppWindow').removeClass('active');
        $(el).addClass('active');
    }
});

具有以下 css 变化

.AppWindow.ui-draggable-dragging,
.AppWindow.active {
    z-index: 1;
}

编辑:稍微优化了 js,以便 window 在您开始拖动后激活。