2

我有一个带有许多聊天 DIV 的窗口,用户可以在其中与不同的人聊天。

目前,聊天 DIV 可以打开并四处移动,但我看不到将当前选择的 DIV 设置在前面。例如:当您将鼠标放在 DIV 上时,它会进入前台。

HTML:

<div id="1000000001" class="chatMessenger">
    <div class="chatMessengerContainer">
        </div>
</div>

CSS:

div.chatMessenger {
    position: absolute;
    top: 50px;
    left: 50px;
    width: 250px;
    height: 300px;
    background-color: white;
    z-index: 100;
    border: 1px solid black;
}

查询:

    // JQUERY UI Draggable - Initialize
    $('div#'+memberID).draggable({
        containment: $('div#chatWrapper')
    });


    // JQUERY UI Draggable - Setting the Stack
    $(document).on('mousedown','div.chatMessenger', function() {
        alert('chat mouse down...');
        //var stack = $( ".selector" ).draggable( "option", "stack" );
        $(this).draggable( "option", "stack", ".products" );
    });

警报在 mousedown 中触发,因此这是找到正确的元素。

我查看了 Draggable z-index 和 stack 但我无法让任何一个工作。

会有多个聊天DIV同时打开给选中的需要坐在前面的。

谢谢你。

4

4 回答 4

8

这应该有帮助

$('div.chatMessenger').not(this).css('z-index', '100');
$(this).css('z-index', '1000');

内部on('mousedown')函数。

于 2012-09-30T21:56:30.083 回答
2

对于您希望将一个放在前面并将其他的重新设置为后面的几个可拖动对象:

$('.container').on('mousedown', function(event) { 
    $('.container').css('z-index','1');
    $( this ).css('z-index','1000');
});
于 2013-03-08T19:42:22.613 回答
0

我发现最简单的实现是将dom中的div移动到最后一个位置。因此,如果您不必关心 dom 中的位置,这是不使用 z-index 的最简单方法。我用它来定位一些便签。

$("#chatWrapper").on('mousedown', '.chatMessenger', function() {
    $(this).appendTo("#chatWrapper");
});
于 2014-06-25T13:26:55.130 回答
0

虽然有一个选项 - 在启动这样的可拖动项时存在“堆栈” -

$('.draggable').draggable({
    stack: ".draggable"
});

但它不能正常工作,所以我写了一个小库 dragToFront 玩 z-index。以下是 plunkr 链接

https://embed.plnkr.co/mJqkxSJhf1Umg7r2oLQN/

于 2016-08-01T10:39:01.637 回答