2013-07-16 16 views
6

Hangi belgede olursa olsun, bir belgedeki en yüksek z-endeksini nasıl bulabilirim? Bir belgede en yüksek z-endeksi nasıl bulunur, hangi etikette olursa olsun?

Bu kodu buldum ama daha test ve

//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); 
}); 

, bunu yapmak için herhangi bir iyi bir yaklaşım çalışmıyor?

DÜZENLEME:

Ben bu kodu değiştirirseniz iş gibi görünüyor,

$('body *') 

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

harika bir soru! İlk önce eklentilere başvurmaktan ziyade kodu anlamak isterim. –

cevap

6

Bu en verimli çözüm değildir, ancak çalışması gerekir. jsFiddle.

Lütfen z dizininin bir değer döndürmesi için belirtilen bir konumun olması gerektiğini unutmayın.

var highest = -999; 

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

alert(highest); 
+0

Haklısınız. Cevap için teşekkürler. – laukok

+0

Bu jQuery ifadesi benim için çalıştı. Teşekkürler –

+0

Sayı -999 yerine Number.NEGATIVE_INFINITY veya -Infinity kullanmak iyi bir uygulamadır. Tüm elemanlar konumlandırılmışsa ve hepsi -999'dan daha az olan z-endeksine sahipse, bu doğru cevabı vermeyecektir. – Julian

3

Bu iş gibi görünüyor:

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

jsFiddle example

Sana yayınlanan koduyla sorunlardan biri yalnızca mutlak konumlandırılmış elemanları kontrol ediyoruz olduğunu düşünüyorum.

+0

awww güzel! – laukok

İlgili konular