我有许多具有不同z索引的div元素。我想在这些div中找到最高的z指数--我该如何实现呢?
CSS:
#layer-1 { z-index: 1 }
#layer-2 { z-index: 2 }
#layer-3 { z-index: 3 }
#layer-4 { z-index: 4 }HTML:
<div id="layer-1">layer-1</div>
<div id="layer-2">layer-2</div>
<div id="layer-3">layer-3</div>
<div id="layer-4">layer-4</div>但我不认为这条线能找到最高的z指数。
var index_highest = parseInt($("div").css("zIndex"));
// returns 10000发布于 2011-04-16 02:23:34
请注意,z-index仅影响定位的元素。因此,任何带有position: static的元素都将没有z索引,即使您为其赋值也是如此。这在像Google Chrome这样的浏览器中尤其如此。
var index_highest = 0;
// more effective to have a class for the div you want to search and
// pass that to your selector
$("#layer-1,#layer-2,#layer-3,#layer-4").each(function() {
// always use a radix when using parseInt
var index_current = parseInt($(this).css("zIndex"), 10);
if(index_current > index_highest) {
index_highest = index_current;
}
});JSFiddle demo
当与返回一个值的选项一起使用时,像这样的通用jQuery选择器将只返回第一个值,因此您的结果只是jQuery获取的第一个div的z索引。要只获取您想要的div,可以在它们上使用一个类。如果您想要所有的div,请坚持使用div。
发布于 2013-08-30 20:58:41
下面是一个非常简洁的方法:
var getMaxZ = function(selector){
return Math.max.apply(null, $(selector).map(function(){
var z;
return isNaN(z = parseInt($(this).css("z-index"), 10)) ? 0 : z;
}));
};用法:
getMaxZ($("#layer-1,#layer-2,#layer-3,#layer-4"));或者,作为jQuery扩展:
jQuery.fn.extend({
getMaxZ : function(){
return Math.max.apply(null, jQuery(this).map(function(){
var z;
return isNaN(z = parseInt(jQuery(this).css("z-index"), 10)) ? 0 : z;
}));
}
});用法:
$("#layer-1,#layer-2,#layer-3,#layer-4").getMaxZ();发布于 2011-04-16 02:30:08
除了上面@justkt的原生解决方案之外,还有一个很好的插件可以做你想做的事情。看看TopZIndex吧。
$.topZIndex("div");https://stackoverflow.com/questions/5680770
复制相似问题