我有许多嵌套的、绝对定位的元素的复杂结构。
这些元素可能有也可能没有他们的 z-index 集。
它们也可能有也可能没有相同的父元素。
我想知道返回哪个元素位于“顶部”的最佳/最简单方法是什么。类似于以下内容...
$(".panel").topMost()
在此先感谢您的帮助
我有许多嵌套的、绝对定位的元素的复杂结构。
这些元素可能有也可能没有他们的 z-index 集。
它们也可能有也可能没有相同的父元素。
我想知道返回哪个元素位于“顶部”的最佳/最简单方法是什么。类似于以下内容...
$(".panel").topMost()
在此先感谢您的帮助
你的意思是z-index最高的元素:
$(document).ready(function() {
var array = [];
$("*").each(function() {
array.push($(this).css("z-index"));
});
var highest = Math.max.apply(Math, array);
console.log(highest);
});
尝试这个:
var z = [];
$('.panel').each(function(i, el) {
var $panel = $(el),
zindex = $panel.css('z-index');
z[zindex] = $panel;
});
var topMost = z.slice(-1);
有一个插件..topZindex
$.topZIndex("div");
在显示 jQuery UI 日期选择器并使用事件参数来找出单击的图标时,我在模态对话框中遇到了类似的问题。模态对话框覆盖阻止新的日期选择器显示在模态对话框的顶部。
在三种浏览器(IE、Firefox 和 Chrome)中运行的最佳解决方案是:
function topZIndex(target, selector) {
var objs = $(target).parents(selector + '[z-index > 0]');
var a1 = -1;
$.each(objs, function (index, z1) {a1=(z1.style.zIndex > a1)? z1.style.zIndex : a1; });
return a1;
};
使用事件参数如下:
var zIndex = topZIndex(event.currentTarget, 'div')+1;
或者
var zIndex = topZIndex(event.currentTarget, '*')+1;
两种组合都将产生相同的结果,但是通过指定 'div' 而不是 '*' 来指定更有效
然后假设我的日期选择器 id 是 datepickerpanel 为 datepicker 设置新的 zIndex
$('#datepickerpanel').css('z-index', zIndex);
此解决方案提供了适当的 z-index 值以将新对象放置在模态对话框的顶部。
看看你是否没有指定z-index
绝对元素 then last of the element will be on top of other elems
,意味着last element will have a greater highest default z-index calculated by browser
它本身。
var array = [];
$("*").each(function () {
if ($(this).css('position') == 'absolute') {
array.push($(this).css("position")+'<--pos & class -->'+$(this).attr('class'));
}
});
console.log(array[array.length-1]);