【发布时间】:2013-01-03 04:07:49
【问题描述】:
我有很多动态创建的元素,只要它得到 z-Index++,所以最新的元素随时都在顶部。当其中一个被点击时,他得到他的 z-Index max+1。所以我需要得到元素,也就是在上面,我该怎么做呢?
请仅使用本机 JS。谢谢
【问题讨论】:
标签: javascript css z-index
我有很多动态创建的元素,只要它得到 z-Index++,所以最新的元素随时都在顶部。当其中一个被点击时,他得到他的 z-Index max+1。所以我需要得到元素,也就是在上面,我该怎么做呢?
请仅使用本机 JS。谢谢
【问题讨论】:
标签: javascript css z-index
不要试图找到它——你需要迭代所有的 DOM。当您动态创建它们时,只需保存对它的引用并每次更新它。或者只是将当前最高的z-index 值存储在max 变量中。
【讨论】:
z-Index++ 相同
but I don't see how it's possible to keep a precise z-index ...通过设置?
pop() 即可获取并关闭最顶层的窗口。
假设您只在 style 属性中应用 z-index
var elems = document.body.getElementsByTagName("*");
var largest;
var check = 0;
for(i=0;i<elems.length;i++){
if(elems[i].style.zIndex > check){
check = elems[i].style.zIndex;
largest = elems[i];
}
}
// largest is the element
// check is the z-index value of the element with largest z-index
在 chrome 等 webkit 浏览器和 safari 中,获取元素的计算样式似乎是一个问题,因为它返回 auto,这是一个主要问题,因为 chrome 尤其是现在是一种流行且广泛使用的浏览器。所以现在我建议如果你想这样做,在样式属性中应用 z-index,直到错误被修复
【讨论】:
这是最好的解决方案
$(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);
});
【讨论】: