Jquery 如何在文档中找到最高的z索引,而不管它们是什么标记?

Jquery 如何在文档中找到最高的z索引,而不管它们是什么标记?,jquery,z-index,jquery-1.9,Jquery,Z Index,Jquery 1.9,如何在文档中找到最高的z索引,而不管它们是什么标记 我找到了这个代码,但我测试了它,它不工作 //include jQuery.js -- visit: http://jquery.com/ $(function(){ var maxZ = Math.max.apply(null,$.map($('body > *'), function(e,n){ if($(e).css('position')=='absolute') r

如何在文档中找到最高的z索引,而不管它们是什么标记

我找到了这个代码,但我测试了它,它不工作

//include jQuery.js --  visit: http://jquery.com/
$(function(){
    var maxZ = Math.max.apply(null,$.map($('body > *'), function(e,n){
           if($(e).css('position')=='absolute')
                return parseInt($(e).css('z-index'))||1 ;
           })
    );
    alert(maxZ);
});
有没有更好的办法

编辑:

如果我把代码改成这个似乎行得通

$('body *')

$('body > *') --> is for div only I guess.

这不是最有效的解决方案,但它应该会起作用

请注意,必须指定一个位置才能使z索引返回值

var highest = -999;

$("*").each(function() {
    var current = parseInt($(this).css("z-index"), 10);
    if(current && highest < current) highest = current;
});

alert(highest);
var最高=-999;
$(“*”)。每个(函数(){
var current=parseInt($(this).css(“z-index”),10);
如果(电流&最高<电流)最高=电流;
});
警报(最高);
这似乎有效:

var maxZ=0;
$('*').each(function(){
    if($(this).css('zIndex') > maxZ) maxZ = $(this).css('zIndex');
})
console.log(maxZ);


我认为您发布的代码的一个问题是,您只检查绝对定位的元素。

只需添加一个没有jQuery的解决方案:

const all=Array.from(document.queryselectoral('body*');
log('Found',all.length',elements');
常量allIndexes=all.map((元素)=>{
if(元素样式){
return+elem.style.zIndex | | 0;
}
返回-无限;
});
const max=Math.max.apply(空,所有索引);
log('Max z-index:',Max)
.cl{
位置:绝对位置;
边框:1px实心;
}


问得好,伙计!我总是喜欢理解代码,而不是先求助于插件。最好使用Number.NEGATIVE_∞或-INFINITY来代替神奇的数字-999。如果所有元素都已定位,且所有元素的z索引都小于-999,则这将不会给出正确答案。