更改z-index以使单击的div显示在顶部

时间:2011-12-19 22:02:07

标签: jquery css z-index

在我的应用程序中,我可以打开几个相互重叠的div框。单击框时应将该框移动到顶部。实现这一目标的最佳方法是什么?

我唯一能想到的是循环遍历所有方框z-index值以获得最高值,然后将1加到该值并将其应用于所单击的div。

对我有什么建议吗?

6 个答案:

答案 0 :(得分:14)

这样的事情应该这样做:

// Set up on DOM-ready
$(function() {
    // Change this selector to find whatever your 'boxes' are
    var boxes = $("div");

    // Set up click handlers for each box
    boxes.click(function() {
        var el = $(this), // The box that was clicked
            max = 0;

        // Find the highest z-index
        boxes.each(function() {
            // Find the current z-index value
            var z = parseInt( $( this ).css( "z-index" ), 10 );
            // Keep either the current max, or the current z-index, whichever is higher
            max = Math.max( max, z );
        });

        // Set the box that was clicked to the highest z-index plus one
        el.css("z-index", max + 1 );
    });
});

答案 1 :(得分:5)

假设你有一个具有特定类的元素(在我的例子中为“box”)并且所有元素都在这样的容器中:

<div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
</div>

假设你有正确的css:

.box {position:absolute; z-index:10}

您可以使用下面的jquery js代码:

$('.box').click(function() {
   // set ohters element to the initial level
   $(this).siblings('.box').css('z-index', 10);
   // set clicked element to a higher level
   $(this).css('z-index', 11);
});

答案 2 :(得分:4)

我会通过制作一个jQuery插件来解决这个问题,因此您不必担心手动设置z-index并使用变量跟踪最高值:

(function() {
    var highest = 1;

    $.fn.bringToTop = function() {
        this.css('z-index', ++highest); // increase highest by 1 and set the style
    };
})();

$('div.clickable').click(function() {
    $(this).bringToTop();
});

如果您使用页面上的任何其他代码设置z-index,这将无效。

答案 3 :(得分:0)

你可以用jquery做这样的事情:

$('#div')。click(function(){$(this).css('zIndex','10000'});

只要所有底层div的z-index低于10000,这都可以工作。或者,您可以编写一个函数来迭代所有div并获得最高的z-index并将点击的内容移动到该数字+1

答案 4 :(得分:0)

你想要获得最高的z指数的想法是我认为的方法。

然而,不是在每次单击时循环遍历它,我只会在页面加载时循环遍历它并维护一个存储最高z-index的对象。

CONSTANTS = {
    highest_z_index = 0;
};

function getHighestZ (){
    var $divs = $('div');

    $.each($divs,function(){
        if (this.css('z-index') > CONSTANTS.highest_z_index){
            CONSTANTS.highest_z_index = this.css('z-index');
        }
    });
}

getHighestZ();

$('#YourDiv').click(function(){
    if (CONSTANTS.highest_z_index > $(this).css('z-index'){
         $(this).css('z-index',++CONSTANTS.highest_z_index);
    }
});

答案 5 :(得分:0)

简单! $(".classname").on("click",function(){$(".classname").css('z-index',0);$(this).css('z-index',1);});