冒着被告知这是一个重复问题的风险,我试图找出如何获得页面上所有 div 的最高 z-Index 值,包括那些由 jQuery 创建的 div。
情况是,我有一个 toolTip div,它位于页面顶部,由 jQuery 基于触发元素填充 onMouseover 或 onClick。
我有一个隐藏的 div,调用元素的 onClick 显示在灯箱样式窗口中,jQuery 为其指定了 z-Index。我需要能够从此 div 中的元素触发我的 onMouseover 工具提示,但它目前显示在它后面。
显然我可以手动完成,但为了将来使用,我认为计算方法会更好......
谷歌搜索像往常一样把我带到这篇文章 How can you figure out the highest z-index in your document?
我从中找到的
function findHighestZIndex(elem) {
var elems = document.getElementsByTagName(elem);
var highest = 0;
for (var i = 0; i < elems.length; i++) {
var zindex = document.defaultView.getComputedStyle(elems[i], null).getPropertyValue("z-index");
if ((zindex > highest) && (zindex != 'auto')) {
highest = zindex;
}
}
return (highest * 1);
}
这适用于通过 CSS 明确设置 z-Indexes 的元素。
但是,不是由 jQuery 显示/填充的 div。
上面的函数忽略了这个模态窗口,大概是因为 z-Index 是通过编程创建的?
我在SO上也找到了这个功能
function getMaxZIndex() {
var zIndexMax = 0;
$('div').each(function () {
if ($(this).css('z-index') > zIndexMax) zIndexMax = $(this).css('z-index');
});
return (zIndexMax * 1);
}
但由于某种原因返回 'NAN'
我想我需要在这里的某个地方使用“实时”,但不确定如何去做。
再一次,如果有人认为这是一个重复的问题,我深表歉意,但我在这里找到的问题并没有完全回答这个问题。
最佳答案
.css('z-index') 返回 string
'100' > 0 //true
'auto' > '100' //true
因此 zIndexMax
很可能是 'auto'
而 'auto' * 1
是 NaN
试试这个
function getMaxZIndex() {
var zIndexMax = 0;
$('div').each(function () {
var z = parseInt($(this).css('z-index'));
if (z > zIndexMax) zIndexMax = z;
});
return zIndexMax;
}
关于jquery - 使用 jQuery.live 获取最高 Z-Index 值以确保考虑所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8450382/