Search code examples
jquerycssz-index

Changing z-index to make a clicked div appear on top


In my application I can open several div boxes that overlap each other. When clicking on a box that box should be moved to the top. What is the best way to accomplish this?

The only thing I can think of is looping through all the boxes z-index values to get the highest value, and then add 1 to that value and apply it on the clicked div.

Any advices for me?


Solution

  • something like this should do it:

    // 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 );
        });
    });