私は多くのネストされた、絶対に配置された要素の複雑な構造を持っています。
これらの要素には、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);
});
jQuery UI datepickerを表示し、イベントパラメータを使用してクリックされたアイコンを把握しているときに、モーダルダイアログで同様の問題に直面しました。モーダルダイアログオーバーレイにより、新しい日付ピッカーがモーダルダイアログの上に表示されませんでした。
3つのブラウザー(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値を提供します。
これを試して:
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");
z-index
絶対要素を指定しない場合は、それ自体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]);