2013-07-16 3 views
6

どのようなタグであっても、ドキュメント内の最高のZインデックスを見つけるにはどうすればよいですか?どのようなタグであっても、ドキュメント内で最高のZインデックスを見つけるには?

これを行うには、任意のより良いアプローチを私はこのコードを見つけましたが、私はそれをテストし、それが動作しない、

//include jQuery.js -- visit: http://jquery.com/ 
$(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); 
}); 

EDIT:

これが最も効率的なソリューションではありませんが、それは動作するはず

$('body *') 

$('body > *') --> is for div only I guess. 
+1

偉大な質問男!私はいつもプラグインに頼るよりも、コードを理解したい。 –

答えて

6

、私はこれにコードを変更した場合に動作するようです。 jsFiddle

z-indexが値を返すためには、指定した位置を指定する必要があります。

var highest = -999; 

$("*").each(function() { 
    var current = parseInt($(this).css("z-index"), 10); 
    if(current && highest < current) highest = current; 
}); 

alert(highest); 
+0

あなたは正しいです。答えに感謝します。 – laukok

+0

このjQueryステートメントは私のために働いた。 thanks –

+0

マジックナンバー-999ではなく、Number.NEGATIVE_INFINITYまたは-Infinityを使用することをお勧めします。すべての要素が配置され、すべてが-999より小さいZ-インデックスを持つ場合、これは正しい答えを与えません。 – Julian

3

これは動作するようです:

var maxZ=0; 
$('*').each(function(){ 
    if($(this).css('zIndex') > maxZ) maxZ = $(this).css('zIndex'); 
}) 
console.log(maxZ); 

jsFiddle example

私はあなたが投稿コードの問題の一つは、あなたが唯一の絶対位置の要素をチェックしているということだと思います。

+0

a美しい! – laukok

関連する問題